最近学习spring框架,在spring+hibernate整合中,配置事务遇到了麻烦,头疼了两天,最终豁然开朗。
后来才发现:是因为数据库操作对应的类没有配置对应的<bean id='' class=‘’></bean>导致。
事务配置分声明式和注解式,我用的是声明式(xml),两者核心配置原理相同。
spring整合hinernate方式:
1、定义DAO,继承HibernateTemplate,
2、配置数据库资源datasource(可用c3p0也可用hibernate原生连接池)
3、将datasource配置到sessionFactory
4、将sessionFactory注入到DAO(sessionFactory 为srping HibernateTemplate 类的私有属性,会自动set)
这样就配置好了,测试了一下,顺利!
配置如下:
<!-- 配置dao,注入sessionFactory -->
<bean name="dao" class="com.how2java.dao.CategoryDAO">
<property name="sessionFactory" ref="sf" />
</bean>
<!-- 配置sessionFactory ,注入datasource-->
<bean id="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mappingResources">
<list>
<value>com/how2java/pojo/Category.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL