在已有spring的基础上集成hibernate

1.导入hibernate的包和spring的包
    hibernate3、hibernate-jpa-2.0-api-、必须的包,log4j,log4j配置文件
  1.1 导入Spring的依赖包
  1.2 导入log4j的依赖包
  1.3 导入dbcp的依赖包
  1.4 导入hibernate3的依赖包(hibernate3.jar、require文件中的所有,sif4-api.jar,jpa文件夹中的包)

 

2.创建applicationContext.xml

  2.1 使用DBCP创建dataSource(和集成JDBP一样)

 <!-- 配置数据源 -->
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring_teach"/>
        <property name="username" value="root"/>
        <property name="password" value="111111"/>
    </bean>

 

2.2 创建hibernate的sessionFactory

 <!-- 配置 Hibernate 的 SessionFactory 实例: 通过 Spring 提供的 LocalSessionFactoryBean 进行配置 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <!-- 配置数据源属性 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 配置 hibernate 配置文件的位置及名称 -->  
        <property name="hibernateProperties" value="classpath:hibernate.cfg.xml"></property>
        <!-- 配置 hibernate 映射文件的位置及名称, 可以使用通配符 -->
        <property name="packagesToScan" 
            value="classpath:org/zttc/itat/model/*.hbm.xml"></property>
    </bean>

 

其中 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>
      <!-- 配置hibernate基本信息 -->
      <!-- 1.数据源配置在IOC容器中,此处不需要额外配置 -->
      <!-- 2.关联的.hbm.xml文件也在IOC容器配置SessionFactory时配置 -->
      <!-- 3.此处配置hibernate的基本信息:数据库方言、SQL显示及格式化,及生成数据表的策略,二级缓存等 -->
      <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
      
      <property name="hibernate.show_sql">true</property>
      <property name="hibernate.format_sql">true</property>
      
      <property name="hibernate.hbm2ddl.auto">update</property>
      
    </session-factory>
</hibernate-configuration>

 

3. 为实体类添加annotation或hbm文件


4.创建基于hibernate的DAO


   4.1 在相应的DAO注入相应的SessionFactory


   4.2 如果通过spring来管理相应的SessionFactory,不再使用factory.openSession(),而应该是factory.getCurrentSession()来打开session,这个session就会被spring管理。

 

5. 配置spring事务处理

 

<!-- 配置 Spring 的声明式事务 -->
    <!-- 1. 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!-- 2. 配置事务属性, 需要事务管理器 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!--<tx:method name="get*" read-only="true"/>  -->
            <!--<tx:method name="purchase" propagation="REQUIRES_NEW"/> -->
            <!-- 让所有方法都加入事务管理 -->
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

    <!-- 3. 配置事务切点, 并把切点和事务属性关联起来 -->
    <aop:config>
        <!-- 设置poincut表示哪些方法要加入事务处理 -->
        <aop:pointcut expression="execution(* org.zttc.itat.dao.*.*(..))" id="allMethods"/>
        <!-- 通过advisor来确定具体要加入事务控制的方法 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="allMethods"/>
    </aop:config>


 

posted on 2017-11-11 18:37  水波粼粼  阅读(193)  评论(0编辑  收藏  举报

导航