在已有spring的基礎上集成hibernate

1.導入hibernate的包和spring的包
    hibernate三、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文件夾中的包)mysql

 

2.建立applicationContext.xmlspring

  2.1 使用DBCP建立dataSource(和集成JDBP同樣)sql

 <!-- 配置數據源 -->
    <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,其上有引用:express

<?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文件apache


4.建立基於hibernate的DAOapi


   4.1 在相應的DAO注入相應的SessionFactory緩存


   4.2 若是經過spring來管理相應的SessionFactory,再也不使用factory.openSession(),而應該是factory.getCurrentSession()來打開session,這個session就會被spring管理。session

 

5. 配置spring事務處理app

 

<!-- 配置 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>
相關文章
相關標籤/搜索