- 浏览: 193485 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- java_基础 (26)
- java_web (15)
- javascript (9)
- extJS (0)
- dwr (0)
- guobin_ETL (1)
- guobin_ssh (17)
- guobin_webservice (1)
- guobin_jbpm (0)
- guobin_jquery (0)
- guobin_acegi (1)
- guobin_poi/jxl (2)
- guobin_multiThread (0)
- guobin_名称解释 (0)
- guobin_FLEX (0)
- guobin_php (0)
- guobin_ORACLE (1)
- guobin_mysql (0)
- guobin_linux (0)
- guobin_powerDesigner (0)
- guobin_visol (0)
- guobin_ER/STUDIO (0)
- guobin_jmesa (0)
- guobin_weblogic (0)
- guobin_kettle (0)
- guobin_一路风雨 (5)
- guobin_spark (0)
- java_xml (7)
- guobin_规则引擎 (0)
- 插件开发 (2)
- 软件管理 (3)
- spring mvc (2)
- java_jni (1)
- eclipse (1)
- oracle (0)
- 项目学习笔记 (1)
- java多线程学习记录 (9)
- websphere性能设置和日常维护 (2)
- (1)
- 系统软件架构设计 (1)
- ces (1)
- 需求分析 (2)
- IBM-CICS GATEWAY (1)
- 工具使用 (1)
- 网络信息安全编程 (1)
最新评论
-
yzh__:
学习一个
Hibernate 自关联注解方式 -
xiaoyahuang:
"2)将Sysdeo Plugin下的DevLoad ...
eclipse项目引用 -
guobin6125:
guobin6125 写道sfasshahhah评论的评论
欢迎使用Kit! -
guobin6125:
sfass
欢迎使用Kit! -
guobin6125:
tst23
欢迎使用Kit!
2011-03-24
Spring3.0中的事务控制的配置方法
文章分类:Java编程
第一种配置方法:基于XML的事务管理
这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等。详细配置如下:
Xml代码
1.
2.<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
3. 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
4. -->
5.<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
6. <property name="dataSource" ref="dataSource"></property>
7.</bean>
8.
9.<!-- 定义事务通知 -->
10.<tx:advice id="txAdvice" transaction-manager="transactionManager">
11. <!-- 定义方法的过滤规则 -->
12. <tx:attributes>
13. <!-- 所有方法都使用事务 -->
14. <tx:method name="*" propagation="REQUIRED"/>
15. <!-- 定义所有get开头的方法都是只读的 -->
16. <tx:method name="get*" read-only="true"/>
17. </tx:attributes>
18.</tx:advice>
19.
20.<!-- 定义AOP配置 -->
21.<aop:config>
22. <!-- 定义一个切入点 -->
23. <aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>
24. <!-- 对切入点和事务的通知,进行适配 -->
25. <aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
26.</aop:config>
<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 定义事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 定义方法的过滤规则 -->
<tx:attributes>
<!-- 所有方法都使用事务 -->
<tx:method name="*" propagation="REQUIRED"/>
<!-- 定义所有get开头的方法都是只读的 -->
<tx:method name="get*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 定义AOP配置 -->
<aop:config>
<!-- 定义一个切入点 -->
<aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>
<!-- 对切入点和事务的通知,进行适配 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
</aop:config>第二中配置方法:基于@Transactional的事务管理
这种方法,只需要在Spring配置文件中定义一个事务管理对象(如DataSourceTransactionManager),然后加入<tx:annotation-driven/>节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用@Transactional进行标注。示例如下:
Spring配置XML文件
Xml代码
1.<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
2. 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
3. -->
4.<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
5. <property name="dataSource" ref="dataSource"></property>
6.</bean>
7.<!-- 声明使用注解式事务 -->
8.<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 声明使用注解式事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>Java代码中@Transactional示例
Java代码
1./**
2. * @author ZYWANG 2011-3-24
3. */
4.@Service
5.@Transactional(propagation = Propagation.REQUIRED)
6.public class TeacherServicesImpl implements TeacherServices {
7. @Autowired
8. TeacherDao dao = null;
9.
10. public TeacherDao getDao() {
11. return dao;
12. }
13.
14. public void setDao(TeacherDao dao) {
15. this.dao = dao;
16. }
17.
18. @Override
19. @Transactional(readOnly=true,propagation=Propagation.NEVER)
20. public List<Teacher> getAllTeachers() {
21. return getDao().getAllTeachers();
22. }
23.
24. @Override
25. public void addTeacher(Teacher teacher) {
26. if(teacher.getId() > 0){
27. getDao().updateTeacher(teacher);
28. }else{
29. getDao().addTeacher(teacher);
30. }
31. }
32.}
/**
* @author ZYWANG 2011-3-24
*/
@Service
@Transactional(propagation = Propagation.REQUIRED)
public class TeacherServicesImpl implements TeacherServices {
@Autowired
TeacherDao dao = null;
public TeacherDao getDao() {
return dao;
}
public void setDao(TeacherDao dao) {
this.dao = dao;
}
@Override
@Transactional(readOnly=true,propagation=Propagation.NEVER)
public List<Teacher> getAllTeachers() {
return getDao().getAllTeachers();
}
@Override
public void addTeacher(Teacher teacher) {
if(teacher.getId() > 0){
getDao().updateTeacher(teacher);
}else{
getDao().addTeacher(teacher);
}
}
}
个人认为第一中方式的配置的侵入性低多了,写程序时只需要关注业务和命名规范,不需要考虑事务处理;第二种方式的配置可以更加灵活的使用事务,个性化定制。
以上配置基于Spring 3.0.5 进行设置,参考其《Reference Documentation》
文章来源:http://zywang.iteye.com/blog/974331
Spring3.0中的事务控制的配置方法
文章分类:Java编程
第一种配置方法:基于XML的事务管理
这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等。详细配置如下:
Xml代码
1.
2.<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
3. 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
4. -->
5.<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
6. <property name="dataSource" ref="dataSource"></property>
7.</bean>
8.
9.<!-- 定义事务通知 -->
10.<tx:advice id="txAdvice" transaction-manager="transactionManager">
11. <!-- 定义方法的过滤规则 -->
12. <tx:attributes>
13. <!-- 所有方法都使用事务 -->
14. <tx:method name="*" propagation="REQUIRED"/>
15. <!-- 定义所有get开头的方法都是只读的 -->
16. <tx:method name="get*" read-only="true"/>
17. </tx:attributes>
18.</tx:advice>
19.
20.<!-- 定义AOP配置 -->
21.<aop:config>
22. <!-- 定义一个切入点 -->
23. <aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>
24. <!-- 对切入点和事务的通知,进行适配 -->
25. <aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
26.</aop:config>
<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 定义事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 定义方法的过滤规则 -->
<tx:attributes>
<!-- 所有方法都使用事务 -->
<tx:method name="*" propagation="REQUIRED"/>
<!-- 定义所有get开头的方法都是只读的 -->
<tx:method name="get*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 定义AOP配置 -->
<aop:config>
<!-- 定义一个切入点 -->
<aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>
<!-- 对切入点和事务的通知,进行适配 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
</aop:config>第二中配置方法:基于@Transactional的事务管理
这种方法,只需要在Spring配置文件中定义一个事务管理对象(如DataSourceTransactionManager),然后加入<tx:annotation-driven/>节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用@Transactional进行标注。示例如下:
Spring配置XML文件
Xml代码
1.<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
2. 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
3. -->
4.<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
5. <property name="dataSource" ref="dataSource"></property>
6.</bean>
7.<!-- 声明使用注解式事务 -->
8.<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 声明使用注解式事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>Java代码中@Transactional示例
Java代码
1./**
2. * @author ZYWANG 2011-3-24
3. */
4.@Service
5.@Transactional(propagation = Propagation.REQUIRED)
6.public class TeacherServicesImpl implements TeacherServices {
7. @Autowired
8. TeacherDao dao = null;
9.
10. public TeacherDao getDao() {
11. return dao;
12. }
13.
14. public void setDao(TeacherDao dao) {
15. this.dao = dao;
16. }
17.
18. @Override
19. @Transactional(readOnly=true,propagation=Propagation.NEVER)
20. public List<Teacher> getAllTeachers() {
21. return getDao().getAllTeachers();
22. }
23.
24. @Override
25. public void addTeacher(Teacher teacher) {
26. if(teacher.getId() > 0){
27. getDao().updateTeacher(teacher);
28. }else{
29. getDao().addTeacher(teacher);
30. }
31. }
32.}
/**
* @author ZYWANG 2011-3-24
*/
@Service
@Transactional(propagation = Propagation.REQUIRED)
public class TeacherServicesImpl implements TeacherServices {
@Autowired
TeacherDao dao = null;
public TeacherDao getDao() {
return dao;
}
public void setDao(TeacherDao dao) {
this.dao = dao;
}
@Override
@Transactional(readOnly=true,propagation=Propagation.NEVER)
public List<Teacher> getAllTeachers() {
return getDao().getAllTeachers();
}
@Override
public void addTeacher(Teacher teacher) {
if(teacher.getId() > 0){
getDao().updateTeacher(teacher);
}else{
getDao().addTeacher(teacher);
}
}
}
个人认为第一中方式的配置的侵入性低多了,写程序时只需要关注业务和命名规范,不需要考虑事务处理;第二种方式的配置可以更加灵活的使用事务,个性化定制。
以上配置基于Spring 3.0.5 进行设置,参考其《Reference Documentation》
文章来源:http://zywang.iteye.com/blog/974331
发表评论
-
解决jquery load 缓存数据 .
2012-08-19 16:03 1922当jquery load 一个页面时候 只加载一次 解决方 ... -
spring管理统一异常spring AOP的异常拦截 .
2012-08-18 17:57 9042系统的异常处理机制是衡量一个系统设计的关键因素,良好的异常处理 ... -
Socket 短连接、长连接
2012-08-14 15:11 1262socketSocket协议的形象描述socket的 英文原 ... -
easy ui 验证框02
2012-07-01 10:29 958easyui的验证分为纯客户端验证和ajax验证。 1. ... -
easy ui 验证框 01
2012-07-01 10:28 2728使用过程中的一积累,备查。 EasyUI 验证框使用方法 ... -
16款 web开发的工具
2012-05-24 13:33 830http://www.iteye.com/news/25137 ... -
欢迎使用Kit!
2012-05-08 10:26 1001http://xueduany.github.com/KitJ ... -
c3p0详细配置
2011-06-30 10:36 780c3p0详细配置 官方文档 : http://www.mch ... -
spring c3p0
2011-06-30 10:12 1251C3P0在spring中的配置 2007-01-30 11:2 ... -
oracle存储过程
2011-03-17 15:37 808Oracle 存储过程 关键字: storedprocedur ... -
使用Struts2拦截器实现日志管理系统
2011-03-12 12:33 938最近一个项目客户要求能够监控用户对系统的详细操作步骤,比如某人 ... -
sql优化
2010-03-04 11:18 17421:前言 数据库 ... -
下拉框中 可编辑
2009-09-21 13:19 957<div style="position: r ... -
去除重复登录情况 --登录不重复
2009-08-17 17:25 1276以前做财务项目时遇到了一个问题,以前我都没有考虑过,这次 ...
相关推荐
Spring事务管理配置
spring事务管理 配置文件等详解
Spring事务管理教程,详细讲解了Spring中的事务管理,包括声明式事务,注解式事务,以及事务配置等等
spring3.0两种事务管理配置
spring的事务管理配置详解.txt详细的描述了如何配置spring的事物。
Java高级编程 实验报告 spring 声明事务 实验目的 掌握spring 声明式事务管理配置 实验环境 本实验采用本实验采用的eclipse或者 Myeclpse开发工具。Spring 4.0以上 Jdk1.7以上、oracle/mysql。
3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握基于XML和Annotation的声明式事务管理的使用。 二.实验内容 (1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口...
Spring声明式事务配置管理方法
spring事务配置管理
自己写的Spring事务管理的几种配置方式的Demo。 供新手学习!
spring ibatis 配置spring ibatis 配置spring ibatis 配置spring ibatis 配置
spring 事务管理配置的多种方式,那种是你的菜呢?
Spring事务配置管理分解,主要讲解spring事务这块可预览 Spring事务配置管理分解,主要讲解spring事务这块可预览
测试spring事务管理 搭建了ssh框架的web工程 本工程用到的数据库表很简单 user(id, name) 可自行创建 本例所有的事务放在service层进行管理,方法中间抛出运行时异常以测试是否回滚 Spring配置文件中关于事务...
spring事务操作试验 博客地址:https://blog.csdn.net/u010476739/article/details/99130972
3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握基于XML和Annotation的声明式事务管理的使用。 二、 实验内容 1、在MySQL中创建以下三张表,其中account为账户表,book为书籍信息...
Spring AOP配置事务方法,描述了spring的事务配置,方便开发应用和数据库的连接管理。
配制Spring事务和JdbcTemplate使用 配制Spring事务和JdbcTemplate使用
主要介绍了Spring事务管理配置文件问题排查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
。Spring 框架 由一个容器,一个配置和组织组件的框架,和一组内置的为事务、持久化和Web 用户接口提供的服务组成。作为一种轻量级的J2EE 框架