spring 與 hibernate整合

1、整合應該注意什麼地方


1. Spring 整合 Hibernate 整合什麼 ?

    1). 有 IOC 容器來管理 Hibernate 的 SessionFactory
    2). 讓 Hibernate 使用上 Spring 的聲明式事務 。(能夠不用,若是採用SessionFactory.openSession()的方式能夠不須要用,也能夠用。可是若是採用sessionFactory.getCurrentSession()這種的話,必須採用,由於必須提交事務,可是我按這篇博客操做http://www.cnblogs.com/ylhssn/p/5181149.html,沒有實現成功。)html

2. 整合步驟

    1). 加入 hibernate


        ①. jar 包

要額外引入的jar
        <!-- hibernate部分 -->
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-hibernate3</artifactId>  
            <version>2.0.8</version>  
        </dependency>  
        <dependency>  
            <groupId>org.hibernate</groupId>  
            <artifactId>hibernate-core</artifactId>  
            <version>${hibernate.version}</version>  
        </dependency>
         <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-orm</artifactId>
           <version>${spring.version}</version>
        </dependency>


        ②. 添加 hibernate 的配置文件: 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>java

        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        spring

        <!--這個表不存在的話,就會建立表-->
        <property name="hibernate.hbm2ddl.auto">update</property>
        
        <!-- 配置 hibernate 二級緩存相關的屬性.  TODO -->
        
    </session-factory>
</hibernate-configuration>sql


        ③. 編寫了持久化類對應的 .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">session

<hibernate-mapping>
    <class name="com.jeff.spring.and.hibernate.demo.Address" table="sh_address">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="country" type="java.lang.String">
            <column name="country" />
        </property>
        <property name="city" type="java.lang.String">
            <column name="city" />
        </property>
        <property name="detail" type="java.lang.String">
            <column name="detail" />
        </property>
    </class>
</hibernate-mapping>app

    2). 加入 Spring


        ①. jar 包(略)
        ②. 加入 Spring 的配置文件url

(額外的spring配置:)
spring相關的配置以下:spa

    <context:component-scan base-package="com.jeff"/>
    
    <!-- 導入外部屬性文件以下 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    
    <!-- 配置C3P0鏈接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>.net


        <!-- 配置 Hibernate 的 SessionFactory 實例:

                         經過 Spring 提供的 LocalSessionFactoryBean 進行配置 -->
    <bean id="sessionFactory"

                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 配置數據源屬性 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 配置 hibernate 配置文件的位置及名稱 -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        <!-- 配置 hibernate 映射文件的位置及名稱, 能夠使用通配符 -->
        <property name="mappingLocations" 
            value="classpath:mapper/*.hbm.xml"></property>
    </bean>
    <bean id="hibernateTemplate"

                class="org.springframework.orm.hibernate3.HibernateTemplate"
        scope="singleton">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <!-- 配置 Spring 的聲明式事務,若是沒有用到事務的話,能夠不須要配置 -->
    <!-- 1. 配置事務管理器 -->
    <bean id="transactionManager"

                    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <aop:aspectj-autoproxy />
    
 

對於我註釋這一段代碼,增長數據的話,這種操做是報錯的。

相關文章
相關標籤/搜索