spring 与 hibernate整合

一、整合应该注意什么地方


1. Spring 整合 Hibernate 整合什么 ?

    1). 有 IOC 容器来管理 Hibernate 的 SessionFactory
    2). 让 Hibernate 使用上 Spring 的声明式事务 。(可以不用,如果采用SessionFactory.openSession()的方式可以不需要用,也可以用。但是如果采用sessionFactory.getCurrentSession()这种的话,必须采用,因为必须提交事务,但是我按这篇博客操作http://www.cnblogs.com/ylhssn/p/5181149.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>

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

        <!--这个表不存在的话,就会创建表-->
        <property name="hibernate.hbm2ddl.auto">update</property>
        
        <!-- 配置 hibernate 二级缓存相关的属性.  TODO -->
        
    </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">

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

    2). 加入 Spring


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

(额外的spring配置:)
spring相关的配置如下:

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


        <!-- 配置 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 />
    
 

174742_dClA_3648248.png

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

 

 


 

转载于:https://my.oschina.net/u/3648248/blog/1559998

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值