spring整合hibernate步骤及配置文件
spring整合hibernate,主要达到的目的有以下几点
1、使用Spring的IOC功能管理SessionFactory对象 --LocalSessionFactoryBean
对于SessionFactory对象的管理可以分为两类,一类是通过spring直接管理,另一类是通过hibernate自身的配置文件hibernate.cfg.xml进行配置,通过spring配置文件引入到spring框架中。
2、使用Spring管理Session对象 -- HibernateTemplate
对于HibernateTemplate的配置也有两种情况,一种是在spring中显示的配置hibernate操作模板类HibernateTemplate,程序中声明HibernateTemplate属性,并在spring中注入该属性。
private HibernateTemplate hibernateTemplate;public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}
<!-- 配置hibernate操作模板类 --> <bean name="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory"></property></bean>
<!-- 向dao中注入hibernateTemplate模板对象 -->
<bean name="hibernateDao" class="com.hibernate.dao.impl.HibernateDaoImpl"><property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean>
另一种情况是不在spring配置文件中声明 HibernateTemplate,程序中不必声明HibernateTemplate,而是继承HibernateDaoSupport类。采用这种方法之后,在使用时只需向程序中注入SessionFactory即可。
java类如下,继承HibernateDaoSupport类,程序中不必声明HibernateTemplate,也不必声明SessionFactory,spring配置文件中直接向该类中注入SessionFactory。(被继承的HibernateDaoSupport中声明了SessionFactory属性)
public class ListMPByGroupIdDao extends HibernateDaoSupport implements IListMPByGroupIdDao {...}
配置文件如下
<!-- 向dao中注入SessionFactory -->
<bean id="listMPByGroupIdDao" class="com.ai.rms.dao.impl.ListMPByGroupIdDao"><property name="sessionFactory" ref="sessionFactory"></property>
</bean>
3、使用Spring的功能实现声明式的事务管理
接下来按照对SessionFactory对象的两种管理方法列出详细配置,首先是通过spring管理SessionFactory
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd"><!-- 配置hibernate操作模板类 --> <bean name="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory"></property></bean> <!-- 配置sessionFactory对象 --><bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="MydataSource"></property><property name="mappingLocations"><list><value>com/hibernate/bean/User.hbm.xml</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop><prop key="hibernate.show_sql">true</prop></props></property></bean> <!-- 配置数据源 --><bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"name="MydataSource"><property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property><property name="url"><value>jdbc:oracle:thin:@localhost:1521:xe</value></property><property name="username"><value>aduser</value></property><property name="password"><value>123456</value></property></bean><!-- 向dao中注入hibernateTemplate模板对象 --><bean name="hibernateDao" class="com.hibernate.dao.impl.HibernateDaoImpl"><property name="hibernateTemplate" ref="hibernateTemplate"></property></bean><!-- 构建service对象 --> <bean name="service" class="com.hibernate.service.impl.UserServiceImpl"><property name="dao" ref="hibernateDao"></property></bean><!-- 配置事务管理器 --><bean name="tranManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 配置事务拦截器 --><bean name="tranInterceptor" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager" ref="tranManager"></property><property name="transactionAttributes"><props><!-- 事务传播属性,事务隔离级别, 方法属性值,控制提交回滚操作 (+Exception强制提交,-Exception回滚)--><!-- <prop key="*">PROPAGATION_REQUIRED,,,</prop> --><prop key="*">PROPAGATION_REQUIRED</prop></props></property><property name="target" ref="service"></property></bean></beans>
使用hibernate自身的配置文件 hibernate.cfg.xml配置SessionFactory时,在spring配置文件中不必声明数据源datasource 配置如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd"><!-- 配置hibernate操作模板类 --> <bean name="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory"></property></bean> <!-- 配置sessionFactory对象 --><bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocations"><list><value>classpath:hibernate.cfg.xml</value></list></property></bean><!-- 向dao中注入hibernateTemplate模板对象 --><bean name="hibernateDao" class="com.hibernate.dao.impl.HibernateDaoImpl"><property name="hibernateTemplate" ref="hibernateTemplate"></property></bean><!-- 构建service对象 --> <bean name="service" class="com.hibernate.service.impl.UserServiceImpl"><property name="dao" ref="hibernateDao"></property></bean><!-- 配置事务管理器 --><bean name="tranManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 配置事务拦截器 --><bean name="tranInterceptor" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager" ref="tranManager"></property><property name="transactionAttributes"><props><!-- 事务传播属性,事务隔离级别, 方法属性值,控制提交回滚操作 (+Exception强制提交,-Exception回滚)--><!-- <prop key="*">PROPAGATION_REQUIRED,,,</prop> --><prop key="*">PROPAGATION_REQUIRED</prop></props></property><property name="target" ref="service"></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"><hibernate-configuration>
<session-factory><property name="show_sql">true</property><property name="myeclipse.connection.profile">runnew</property><property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property><property name="connection.username">aduser</property><property name="connection.password">123456</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><mapping resource="com/hibernate/bean/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
spring整合hibernate步骤及配置文件相关推荐
- Spring整合Hibernate步骤以及遇到的问题
spring整合Hibernate步骤以及遇到的问题 文章目录 spring整合Hibernate步骤以及遇到的问题 步骤: 创建实体类: 编写Dao层: 编写server层: spring配置文件 ...
- spring整合hibernate事务编程中错误分析
2019独角兽企业重金招聘Python工程师标准>>> 在spring整合hibernate过程中,我们的配置文件: <?xml version="1.0" ...
- 【Spring】Spring系列6之Spring整合Hibernate
6.Spring整合Hibernate 6.1.准备工作 6.2.示例 com.xcloud.entities.book com.xcloud.dao.book com.xcloud.service. ...
- 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 参考文章: (1)解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 (2)https://www.cn ...
- Spring整合Hibernate的步骤
为什么要整合Hibernate? 1.使用Spring的IOC功能管理SessionFactory对象 LocalSessionFactoryBean 2.使用Spring管理Session对象 ...
- Spring整合Hibernate图文步骤
工具:myeclipse9.0 Spring版本:2.5.6 Hibernate版本:3 昨天花了一下午时间把Spring和Hibernate整合到了一起,今天做一个笔记. 首先建立java Proj ...
- spring整合hibernate(注解、xml)applicationContext.xml配置
每次ssh框架整合都很麻烦,今天有空余时间总结下(主要总结spring+hibernate): 1.注解方式整合: applicationContext.xml配置文件: <?xml versi ...
- Spring整合Hibernate和Struts2 (SSH)
1.首先从整合Hibernate开始 2.导入包,这里就把所有的报导进来,包括struts2的,一起导进来 一共29个包 3.编写实体类 package star.july.entity; publi ...
- Spring整合Hibernate。。。。
环境搭建,在eclipse中导入spring和hibernate框架的插件,和导入所有使用到的架包 首先,hibernate的创建: 建立两个封装类,其中封装了数据库中表的属性,这儿只写属性,gett ...
最新文章
- element怎么设置复选框属性_【JavaScript 教程】DOM——属性的操作
- 来学习开发一个网页版马里奥小游戏吧
- poj 1182 食物链(高级的带权并查集)
- android权限机制6.0,Android6.0权限机制(二):封装
- 了解SQL Server数据库恢复模型
- TABLE与DIV的取舍
- 职业学校计算机课评课,中职计算机评课稿
- 免费且好用的UML工具推荐
- mysql grant什么意思_MySQL grant 语法的详细解析
- 微信java精简版低内存_微信精简版低内存apk-微信精简版2019下载v7.0.6 安卓版-腾牛安卓网...
- 资深项目经理2019年总结
- 哪款蓝牙耳机品质好?音质好的四款蓝牙耳机测评
- OFFICE中的VBA库的定义
- edi mysql_EDI:_数据库基础(mysql)答案_学小易找答案
- NCBI数据下载-sra
- 20171107--SQL变量,运算符,存储过程
- 机械臂示教轨迹参数化方法 DMP, Dynamic Movement Primitive (一)
- c语言 for each循环,C#中foreach循环对比for循环的优势和劣势
- M8 解决 无法用blt 半透明和AlphaBlt实现关键色的问题。
- 20_django项目的部署和总结