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 />
    
 

对于我注释这一段代码,增长数据的话,这种操做是报错的。

相关文章
相关标签/搜索