spring与hibernate集成--spring配置文件applicationContext.xml的配置:

本文介绍如何在Spring框架中配置事务管理,包括配置SessionFactory、事务管理器transactionManager、定义AOP切点及事务传播特性等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)、配置sessionFactory

// 注: id="sessionFactory"中的id不能随便命名,要根据spring中jar包的setSessionFactory来命名
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
(2)、配置事务管理器transactionManager
// 注: id="transactionManager"中的id不能随便命名,要根据spring中jar包的setTransactionManager来命名
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
(3)、配置哪些类的哪些方法参与事务,即AOP的配置:
/* 注:execution(* com.tf.hibernate.dao.*.*(..))具体写法根据自己的需求来定。在这里第一个*表示参与事务的方法的返回值可有可无,第二个*表示此dao包下的所有 */类,第三个*表示dao包下 的所有类的所有方法,(..)方法中的参数可以为任意多个
<aop:config>
<aop:pointcut expression="execution(* com.tf.hibernate.dao.*.*(..))" id="transactionMethod"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionMethod"/>
</aop:config>
(4)、配置事务传播特性:
/*注:propagation="REQUIRED"表示以XXX开始的方法的事务传播特性为:如果存在一个事务,则支持当前事务;如果没有则重新开启事务,是最为常用的一种配置
*/  read-only="true"表示其他方法的事务设置为只读,这样设置可以优化系统的性能,默认为false
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<!-- read-only只读 -->
<tx:method name="*" propagation="REQUIRED" read-only="true"/>
</tx:attributes>

</tx:advice>

(5)、具体配置如下(简单的配置):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans" 
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
       <!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 哪些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut expression="execution(* com.tf.hibernate.dao.*.*(..))" id="transactionMethod"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionMethod"/>
</aop:config>

<!-- 事务传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<!-- read-only只读 -->
<tx:method name="*" propagation="REQUIRED" read-only="true"/>
</tx:attributes>
</tx:advice>

<import resource="applicationContext-dao.xml"/>

</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值