Spring整合Hibernate
来源:互联网 发布:js字符串函数表 编辑:程序博客网 时间:2024/06/04 23:29
Spring整合Hibernate
Spring整合Hibernate整合什么?
- 由IoC容器来管理Hibernate的SessionFactory
- 让Hibernate使用上Spring的声明式事务
整合步骤:
1.加入Hibernate
添加的有Hibernate的jar包,c3p0的jar包和mysql的驱动
添加Hibernate的配置文件hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- 配置hibernate的基本属性 --> <!-- 1.数据源需配置到IoC容器中,所以在此处不需要配置数据源 --> <!-- 2.关联的.hbm.xml 也在IoC容器配置SessionFactory实例时进行配置 --> <!-- 3.配置hibernate的基本属性:方言,SQL 显示及格式化,生成数据表的策略,二级缓存 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置hibernate 二级缓存相关 --> </session-factory></hibernate-configuration>
创建持久化类,并创建对应的hbm.xml
映射文件
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-8-22 15:53:26 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="hibernate.entities.Account" table="SH_ACCOUNT"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="username" type="java.lang.String"> <column name="USERNAME" /> </property> <property name="balance" type="int"> <column name="BALANCE" /> </property> </class></hibernate-mapping>
2.加入Spring
加入Spring的jar包
加入Spring的配置文件
配置数据库,导入资源文件
创建db.properties
jdbc.user=rootjdbc.password=jdbc.driverClass=com.mysql.jdbc.Driverjdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/testjdbc.initPoolSize=5jdbc.maxPoolSize=10
在applicationContext.xml
中导入,这里需要导入context命名空间
<!-- 配置数据源 --><!-- 导入资源文件 --><context:property-placeholder location="classpath:db.properties"/><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property> <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property></bean>
配置Hibernate 的SessionFactory 实例,通过Spring提供的LocalSessionFactoryBean
进行配置
<!-- 配置Hibernate 的SessionFactory 实例 --><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 配置数据源属性 --> <property name="dataSource" ref="dataSource"></property> <!-- 配置hibernate配置文件位置及名称 --> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> <!-- 配置hibernate映射文件的位置和名称,可以使用通配符 --> <property name="mappingLocations" value="classpath:spring/hibernate/entities/*.hbm.xml"></property></bean>
配置Spring的声明式事务,导入tx、aop命名空间。
<!-- 配置Spring的声明式事务 --><!-- 1.配置管理器--><bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"></bean><!-- 2.配置事务属性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="*"/> </tx:attributes></tx:advice><!-- 3.配置事务切点,并把切点和事务属性关联起来--><aop:config> <aop:pointcut expression="execution(* hibernate.service.*.*(..))" id="txPointCut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/></aop:config>
在DAO层中使用Hibernate
不推荐使用HibernateTemplate
和 HibernateDaoSupport
, 因为只支持hibernate3,而且这个类是Spring中的,导致DAO和Spring的API耦合,可移植性变差。
直接使用SessionFactory
,如下:
private SessionFactory sessionFactory;public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory;}//获取和当前线程绑定的sessionprivate Session getSession() { return sessionFactory.getCurrentSession();}/** * DAO保存商品的方法 * @param product */public void save(Product product) { System.out.println("DAO save()"); getSession().save(product);}
补充
另一种方式,不使用hibernate.cfg.xml
文件
不带有hibernate配置文件的配置信息,即不需要hibernate.cfg.xml
文件的配置方式
<!-- 引入外部的属性文件 --><context:property-placeholder location="classpath:jdbc.properties"/><!-- 配置连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property></bean><!-- 配置Hibernate的相关属性 --><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 注入连接池 --> <property name="dataSource" ref="dataSource"></property> <!-- 配置Hibernate的属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 加载Hibernate中的映射文件 --> <property name="mappingResources"> <list> <value>com/imooc/ssh/domain/Product.hbm.xml</value> </list> </property></bean>
0 0
- Spring:Spring整合Hibernate
- 【Spring】Spring+hibernate整合
- struts整合spring整合hibernate
- spring 整合hibernate整合方式
- 整合 struts spring hibernate
- struts+spring+hibernate整合
- struts,hibernate,spring整合
- struts+spring+hibernate整合
- struts+spring+hibernate整合
- Spring+hibernate+DWR整合
- webwork+spring+hibernate整合
- webwork+spring+hibernate整合
- Spring整合Hibernate
- Struts hibernate Spring 整合
- Struts hibernate Spring 整合
- Spring整合Hibernate
- 整合Spring、Struts、Hibernate
- webwork+spring+hibernate整合
- 掌握CoordinatorLayout
- “非常规,但有趣” 的排序算法
- POJ3321:Apple Tree(树状数组)
- nginx安装配置
- Codeforces Problem 702D Road to Post Office(分类讨论)
- Spring整合Hibernate
- sockaddr_in , sockaddr , in_addr区别
- Maven的聚合和继承
- UIColor,CGColor,CIColor三者的区别和联系
- in_addr
- Universal-Image-Loader源码阅读(10)-utils/MemoryCacheUtils
- 说下最近对数据库连接的问题和思考
- HDU 3518 Boring counting(后缀数组)
- Snapdragon Flight 刷机教程