http://xuxiaolei.iteye.com/blog/417803

(1)通过TransactionProxyFactoryBean来声明

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  8. http://www.springframework.org/schema/aop
  9. http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  12. <bean id="dataSource"
  13. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  14. <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
  15. <property name="url" value="jdbc:hsqldb:hsql://localhost" />
  16. <property name="username" value="sa" />
  17. <property name="password" value="" />
  18. </bean>
  19. <bean id="sessionFactory"
  20. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  21. <property name="dataSource" ref="dataSource" />
  22. <property name="mappingResources">
  23. <list>
  24. <value>domain/Contestant.hbm.xml</value>
  25. <value>domain/Event.hbm.xml</value>
  26. <value>domain/Location.hbm.xml</value>
  27. <value>domain/User.hbm.xml</value>
  28. <value>domain/Voter.hbm.xml</value>
  29. </list>
  30. </property>
  31. <property name="hibernateProperties">
  32. <props>
  33. <prop key="hibernate.dialect">
  34. org.hibernate.dialect.HSQLDialect
  35. </prop>
  36. <prop key="hibernate.show_sql">true</prop>
  37. </props>
  38. </property>
  39. </bean>
  40. <bean id="transactionManager"
  41. class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  42. <property name="sessionFactory" ref="sessionFactory" />
  43. </bean>
  44. <bean id="parentService"
  45. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  46. abstract="true">
  47. <property name="transactionManager" ref="transactionManager" />
  48. <property name="transactionAttributes">
  49. <props>
  50. <prop key="add*">PROPAGATION_REQUIRED</prop>
  51. <prop key="update*">PROPAGATION_REQUIRED</prop>
  52. <prop key="persist*">PROPAGATION_REQUIRED</prop>
  53. <prop key="delete*">PROPAGATION_REQUIRED</prop>
  54. <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
  55. </props>
  56. </property>
  57. </bean>
  58. <bean id="userDao" class="dao.UserDaoImpl">
  59. <property name="sessionFactory" ref="sessionFactory" />
  60. </bean>
  61. <bean id="userServiceTarget" class="service.UserServiceImpl">
  62. <property name="userDao" ref="userDao" />
  63. </bean>
  64. <bean id="userService" parent="parentService">
  65. <property name="target" ref="userServiceTarget" />
  66. <property name="proxyInterfaces" value="service.UserService" />
  67. </bean>
  68. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
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.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:hsql://localhost" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>domain/Contestant.hbm.xml</value>
<value>domain/Event.hbm.xml</value>
<value>domain/Location.hbm.xml</value>
<value>domain/User.hbm.xml</value>
<value>domain/Voter.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.HSQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="parentService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="persist*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
</props>
</property>
</bean>
<bean id="userDao" class="dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="userServiceTarget" class="service.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
<bean id="userService" parent="parentService">
<property name="target" ref="userServiceTarget" />
<property name="proxyInterfaces" value="service.UserService" />
</bean>
</beans>

(2)通过aop:config

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  8. http://www.springframework.org/schema/aop
  9. http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  12. <bean id="dataSource"
  13. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  14. <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
  15. <property name="url" value="jdbc:hsqldb:hsql://localhost" />
  16. <property name="username" value="sa" />
  17. <property name="password" value="" />
  18. </bean>
  19. <bean id="sessionFactory"
  20. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  21. <property name="dataSource" ref="dataSource" />
  22. <property name="mappingResources">
  23. <list>
  24. <value>domain/Contestant.hbm.xml</value>
  25. <value>domain/Event.hbm.xml</value>
  26. <value>domain/Location.hbm.xml</value>
  27. <value>domain/User.hbm.xml</value>
  28. <value>domain/Voter.hbm.xml</value>
  29. </list>
  30. </property>
  31. <property name="hibernateProperties">
  32. <props>
  33. <prop key="hibernate.dialect">
  34. org.hibernate.dialect.HSQLDialect
  35. </prop>
  36. <prop key="hibernate.show_sql">true</prop>
  37. </props>
  38. </property>
  39. </bean>
  40. <bean id="transactionManager"
  41. class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  42. <property name="sessionFactory" ref="sessionFactory" />
  43. </bean>
  44. <tx:advice id="txAdvice">
  45. <tx:attributes>
  46. <tx:method name="add*" propagation="REQUIRED" />
  47. <tx:method name="update*" propagation="REQUIRED" />
  48. <tx:method name="delete*" propagation="REQUIRED" />
  49. <tx:method name="persist*" propagation="REQUIRED" />
  50. <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
  51. </tx:attributes>
  52. </tx:advice>
  53. <aop:config>
  54. <aop:advisor pointcut="execution(* *..UserService.*(..))" advice-ref="txAdvice" />
  55. </aop:config>
  56. <bean id="userDao" class="dao.UserDaoImpl">
  57. <property name="sessionFactory" ref="sessionFactory" />
  58. </bean>
  59. <bean id="userService" class="service.UserServiceImpl">
  60. <property name="userDao" ref="userDao" />
  61. </bean>
  62. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
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.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:hsql://localhost" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>domain/Contestant.hbm.xml</value>
<value>domain/Event.hbm.xml</value>
<value>domain/Location.hbm.xml</value>
<value>domain/User.hbm.xml</value>
<value>domain/Voter.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.HSQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="persist*" propagation="REQUIRED" />
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* *..UserService.*(..))" advice-ref="txAdvice" />
</aop:config>
<bean id="userDao" class="dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="userService" class="service.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
</beans>

(3)通过注解

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  8. http://www.springframework.org/schema/aop
  9. http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  12. <bean id="dataSource"
  13. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  14. <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
  15. <property name="url" value="jdbc:hsqldb:hsql://localhost" />
  16. <property name="username" value="sa" />
  17. <property name="password" value="" />
  18. </bean>
  19. <bean id="sessionFactory"
  20. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  21. <property name="dataSource" ref="dataSource" />
  22. <property name="mappingResources">
  23. <list>
  24. <value>domain/Contestant.hbm.xml</value>
  25. <value>domain/Event.hbm.xml</value>
  26. <value>domain/Location.hbm.xml</value>
  27. <value>domain/User.hbm.xml</value>
  28. <value>domain/Voter.hbm.xml</value>
  29. </list>
  30. </property>
  31. <property name="hibernateProperties">
  32. <props>
  33. <prop key="hibernate.dialect">
  34. org.hibernate.dialect.HSQLDialect
  35. </prop>
  36. <prop key="hibernate.show_sql">true</prop>
  37. <prop key="hibernate.jdbc.batch_size">0</prop>
  38. </props>
  39. </property>
  40. </bean>
  41. <bean id="transactionManager"
  42. class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  43. <property name="sessionFactory" ref="sessionFactory" />
  44. </bean>
  45. <tx:annotation-driven />
  46. <bean id="userDao" class="dao.UserDaoImpl">
  47. <property name="sessionFactory" ref="sessionFactory" />
  48. </bean>
  49. <bean id="userService" class="service.UserServiceImpl">
  50. <property name="userDao" ref="userDao" />
  51. </bean>
  52. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
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.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:hsql://localhost" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>domain/Contestant.hbm.xml</value>
<value>domain/Event.hbm.xml</value>
<value>domain/Location.hbm.xml</value>
<value>domain/User.hbm.xml</value>
<value>domain/Voter.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.HSQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">0</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven />
<bean id="userDao" class="dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="userService" class="service.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
</beans>
Java代码  
  1. package service;
  2. import java.util.List;
  3. import org.springframework.transaction.annotation.Propagation;
  4. import org.springframework.transaction.annotation.Transactional;
  5. import dao.UserDao;
  6. import domain.User;
  7. public class UserServiceImpl implements UserService {
  8. private UserDao userDao;
  9. public void setUserDao(UserDao userDao) {
  10. this.userDao = userDao;
  11. }
  12. @Transactional(propagation=Propagation.REQUIRED, readOnly=true)
  13. public User findById(Long id) {
  14. return userDao.findById(id);
  15. }
  16. @Transactional(propagation=Propagation.REQUIRED, readOnly=true)
  17. public User findByEmail(String email) {
  18. return userDao.findByEmail(email);
  19. }
  20. @Transactional(propagation=Propagation.REQUIRED, readOnly=false)
  21. public void persist(User user) {
  22. userDao.persist(user);
  23. }
  24. @Transactional(propagation=Propagation.REQUIRED, readOnly=true)
  25. public List<User> list() {
  26. return userDao.list();
  27. }
  28. }

spring中事务配置的3种方式相关推荐

  1. spring中事务配置的3种方式-2

    http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch09s05.html http://zpchen.iteye.com/blog/ ...

  2. Spring事务配置的五种方式 说明

    Spring事务配置的五种方式  [转 http://blog.csdn.net/hjm4702192/article/details/17277669] Spring配置文件中关于事务配置总是由三个 ...

  3. Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别、不可重复读与幻读的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spr ...

  4. java中四种注入注解,Spring中依赖注入的四种方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...

  5. SSH深度历险(六) 深入浅出----- Spring事务配置的五种方式

    这对时间在学习SSH中Spring架构,Spring的事务配置做了具体总结.在此之间对Spring的事务配置仅仅是停留在听说的阶段,总结一下.总体把控.通过这次的学习发觉Spring的事务配置仅仅要把 ...

  6. spring中事务失效的几种情况

    下面简单介绍下,spring中常见的事务失效的几种情况.让我们在开发的过程避免这些情况,写出正确而且优雅的代码. 文章目录 数据库引擎不支持,mysql需要InnoDB 方法必须是public的 方法 ...

  7. spring支持事务管理的两种方式

    转载:https://blog.csdn.net/bao19901210/article/details/41724355 事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一 ...

  8. Spring Boot读取配置的几种方式

    读取application文件 在application.yml或者properties文件中添加: info.address=USA info.company=Spring info.degree= ...

  9. Spring中bean实例化的三种方式:默认构造、静态工厂、实例工厂

    1. 默认构造方式:必须提供默认构造 <bean id="bean id" class="工厂全限定类名"></bean> 以Studn ...

最新文章

  1. 第 7 章 项目运作
  2. 电子计算机之父冯.诺依曼的主要贡献,约翰·冯·诺依曼,约翰·冯·诺依曼的生平,贡献等...
  3. windows桌面待办事项_有没有一款使用简单的电脑桌面待办事项提醒软件
  4. scala:对象object
  5. kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解
  6. 互联网架构设计漫谈 (4)-你知道微服务的“分与合”
  7. JSP手机商城系统设计网站
  8. aggs 聚合 取结果
  9. iOS App图标和启动画面尺寸http://www.jianshu.com/p/adpKye
  10. 2022-8-4用GPS模块和Arduino制作一个多功能车辆测速仪
  11. 播布客全部视频教程汇总
  12. 乔布斯斯坦福大学演讲英文原文
  13. DRM in Android详解--转
  14. 微信小程序相关操作示例
  15. 鸿蒙系统源代码解析,鸿蒙内核源码分析(系统调用篇) | 图解系统调用全貌
  16. python配置opencv最简单_Python版本OpenCV安装配置及简单实例
  17. python tkinter button 透明图片_如何使Tkinter支持PNG透明?
  18. 特征选择 Relief 方法
  19. 一次开发中并发删除插入死锁分析记录
  20. 新手必须掌握的20个摄影构图法 转

热门文章

  1. 10.2.4 练习题
  2. 征战蓝桥 —— 2016年第七届 —— C/C++A组第10题——最大比例
  3. 排序算法 —— 插入排序
  4. 【Qt】Visual Studio编译Qt项目报Qt Version错误
  5. 【MFC】工具栏左侧双线效果
  6. 【STM32】系统控制寄存器
  7. 【ARM】Tiny4412裸板编程之按键
  8. 【Linux】一步一步学Linux——runlevel命令(137)
  9. mysql load data 语法_MySql LOAD DATA 使用
  10. python输入一个列表的语句_python自学笔记使用if语句处理列表作业