整合Spring、Struts、Hibernate

本文分析了在整合Spring与Hibernate过程中出现的“Nodatabase selected”错误原因,并提供了配置文件示例,帮助开发者理解如何正确配置Spring与Hibernate。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在整合Spring与Hibernate时,先添加Spring后添加hibernate总是出错,不知道为什么。

出错信息:

Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into form__user (USERNAME, PASSWORD, CID) values (?, ?, ?)]; SQL state [3D000]; error code [1046]; No database selected; nested exception is java.sql.BatchUpdateException: No database selected
java.sql.BatchUpdateException: No database selected
 at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1102)
 at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:860)
 at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
 at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
 at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
 at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
 at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
 at $Proxy1.save(Unknown Source)

把配置文件写一下:

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="SessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation">
   <value>classpath:hibernate.cfg.xml</value>
   <!-- classpath: -->
  </property>
 </bean>
 <bean id="UserDAO" class="org.michael.ssh1.UserDAO">
  <property name="sessionFactory">
   <ref bean="SessionFactory" />
  </property>
 </bean>
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref local="SessionFactory"/>
  </property>
 </bean>
 <bean id="UserDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
   <ref bean="transactionManager"/>
  </property>
  <property name="target">
   <ref local="UserDAO"/>
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>
 </beans>

hibernate.cfg.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

 <session-factory>
  <property name="connection.username">root</property>
  <property name="connection.url">
   jdbc:mysql://localhost:3306/
  </property>
  <property name="dialect">
   org.hibernate.dialect.MySQLDialect
  </property>
  <property name="myeclipse.connection.profile">MySQL</property>
  <property name="connection.password">michael</property>
  <property name="connection.driver_class">
   com.mysql.jdbc.Driver
  </property>
  <property name="show_sql">true</property>
  <mapping resource="org/michael/ssh/User.hbm.xml" />

 </session-factory>

</hibernate-configuration>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值