前边我们讲过了在Hibernate中管理session对象和如何执行批量操作数据库,即hiberante.cfg.xml文件中设置属性<property name="hibernate.current_session_context_class">的值为thread、jta*、managed三个值表示当前session对象分别与本地线程绑定、与JTA事务绑定、Hibernate委托其他程序管理session的生命周期。批量处理数据的方式我们推荐使用原生的JDBC API来做,因为可以Hiberante中缓存的存在容易造成浪费内存。
今天我们来讲一讲Spring如何俩整合Hibernate。
1.Spring整合Hibernate的目的
① Spring来生成和管理Hibernate的SqlSession对象。(确保其是单例的)
② Hibernate可以使用上Spring提供的声明式事务。
2.Spring整合Hibernate的步骤
① 先加入Hibernate的环境
-- 导入Hibernate的jar包(含数据库驱动包和连接池包)
-- 添加Hiberante的配置文件hibernate.cfg.xml文件,并在其中配置Hibernate的基本上属性,如:显示SQL,格式化SQL,主键生成方式等(数据源和导入hbm.xml可以在Spring的IOC容器的配置文件中使用)
-- 创建持久化类
-- 生成对应的hbm.xml文件
② 加入Spring
-- 导入Spring的jar包
-- 加入applicationContext.xml配置文件,并在其中导入一个外置文件db.properties然后配置一个datasource的数据源,然后再配置Hibernate的cfg.xml的实例bean(使用LocalSessionFactoryBean来配置),内含三个属性:数据源、hibernate.cfg.xml的位置、引入的mapper.xml文件。
-- 配置一个声明式事务:HIbernate的事务管理器是HibernateTransactionManager,需要一个属性sessionFactory。