码迷,mamicode.com
首页 > 编程语言 > 详细

Spring4的学习(三)

时间:2014-08-01 20:01:17      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:spring   hibernate   事务   

1.Spring4整合Hibernate4整合什么?

         1). 有 IOC 容器来管理 Hibernate 的 SessionFactory
    2). 让 Hibernate 使用上 Spring 的声明式事务



2. 整合步骤:


1). 加入 hibernate
①. jar 包
②. 添加 hibernate 的配置文件: hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN">

-<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 二级缓存相关的属性. -->


</session-factory>

</hibernate-configuration>



③. 编写了持久化类对应的 .hbm.xml 文件。 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN">

-<hibernate-mapping>


-<class table="SH_BOOK" name="com.atguigu.spring.hibernate.entities.Book">


-<id name="id" type="java.lang.Integer">

<column name="ID"/>

<generator class="native"/>

</id>


-<property name="bookName" type="java.lang.String">

<column name="BOOK_NAME"/>

</property>


-<property name="isbn" type="java.lang.String">

<column name="ISBN"/>

</property>


-<property name="price" type="int">

<column name="PRICE"/>

</property>


-<property name="stock" type="int">

<column name="STOCK"/>

</property>

</class>

</hibernate-mapping>




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

<?xml version="1.0" encoding="UTF-8"?>

-<beans xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans">

<!-- 配置自动扫描的包 -->


<context:component-scan base-package="com.atguigu.spring.hibernate"/>

<!-- 配置数据源 -->


<!-- 导入资源文件 -->


<context:property-placeholder location="classpath:db.properties"/>


-<bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">

<property value="${jdbc.user}" name="user"/>

<property value="${jdbc.password}" name="password"/>

<property value="${jdbc.driverClass}" name="driverClass"/>

<property value="${jdbc.jdbcUrl}" name="jdbcUrl"/>

<property value="${jdbc.initPoolSize}" name="initialPoolSize"/>

<property value="${jdbc.maxPoolSize}" name="maxPoolSize"/>

</bean>

<!-- 配置 Hibernate 的 SessionFactory 实例: 通过 Spring 提供的 LocalSessionFactoryBean 进行配置 -->



-<bean class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" id="sessionFactory">

<!-- 配置数据源属性 -->


<property name="dataSource" ref="dataSource"/>

<!-- 配置 hibernate 配置文件的位置及名称 -->


<!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->


<!-- 使用 hibernateProperties 属相来配置 Hibernate 原生的属性 -->



-<property name="hibernateProperties">


-<props>

<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>

<prop key="hibernate.show_sql">true</prop>

<prop key="hibernate.format_sql">true</prop>

<prop key="hibernate.hbm2ddl.auto">update</prop>

</props>

</property>

<!-- 配置 hibernate 映射文件的位置及名称, 可以使用通配符 -->


<property value="classpath:com/atguigu/spring/hibernate/entities/*.hbm.xml" name="mappingLocations"/>

</bean>

<!-- 配置 Spring 的声明式事务 -->


<!-- 1. 配置事务管理器 -->



-<bean class="org.springframework.orm.hibernate4.HibernateTransactionManager" id="transactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

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

<aop:pointcut id="txPointcut" expression="execution(* com.atguigu.spring.hibernate.service.*.*(..))"/>

<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>

</aop:config>

</beans>

外部属性文件db.properties

jdbc.user=root
jdbc.password=1230
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///spring7

jdbc.initPoolSize=5
jdbc.maxPoolSize=10
#...




3). 整合.


3. 编写代码

Spring4的学习(三),布布扣,bubuko.com

Spring4的学习(三)

标签:spring   hibernate   事务   

原文地址:http://blog.csdn.net/dq3wrr/article/details/38337765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!