Spring中如何配置事务
学过SSH的都知道,整合了SSH之后,SSH的经典增删改查案例业务逻辑层的代码就十分简单.基本上都是一句话的事.
public void addUser(Webuserlogin user) {
//增
this.getHibernateTemplate().save(user);
}
public void delUser(int userid) {
//删
this.getHibernateTemplate().delete(queryById(userid));
}
public Webuserlogin queryById(int userid) {
//根据ID查询
return this.getHibernateTemplate().get(Webuserlogin.class, userid);
}
public void updateUser(Webuserlogin user) {
//改
Webuserlogin users = this.queryById(user.getUserid());
users.setUserrealname(user.getUserrealname());
users.setUseraddress(user.getUseraddress());
this.getHibernateTemplate().merge(users);
}
public List<Webuserlogin> queryList() {
//查
return this.getHibernateTemplate().find("From Webuserlogin");
}
public Webuserlogin loginWeb(Webuserlogin user) {
//登陆 == 按用户名/密码查询
List<Webuserlogin> list = this
.getHibernateTemplate()
.find(
"From Webuserlogin wul Where wul.username = ? and wul.userpwd= ?",
user.getUsername(), user.getUserpwd());
if (list != null && list.size() > 0) {
return user;
}
return null;
}
但是Spring的增删改查并没有将事务整合进去.给我们提供事务的切面,而在实际开发中,增删改查没有事务是非常不利于数据维护的.所以Spring在它的配置文件中给我们提供了用户自定义配置事务的方法.
<!-- 使用事务!!! -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务中方法的属性 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes> <!-- update* 表示这个事务对 * com.services.*.*(..)中的update开头的方法都有效;
对于一些只读(比如登陆)的数据,可以设置readonly=true-->
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!--配置生效位置 -->
<aop:config>
<!-- 第一个星号:方法的返回值为次类型的值时生效(com.model.Webuserlogin/String);
2.services中的哪一个类生效 userServices*;
3.类中的何种方法生效del*;(..)方法中何种参数时生效 -->
<aop:advisor advice-ref="transactionAdvice"
pointcut="execution(* com.services.*.*(..))" />
</aop:config>
事务配置成功之后,在配置文件(applicationContext.xml)和serviceImpl层会有对应的call out--call in小电话
上图--
Spring中如何配置事务的更多相关文章
- Spring框架学习(10)Spring中如何使用事务?
内容源自:Spring中如何使用事务? 一.为什么要使用事务? 如果我们一个业务逻辑只执行一次sql,是不需要使用事务的.但如果要执行多条sql语句才能完成一个业务逻辑的话,这个时候就要使用事务了. ...
- spring中注解式事务不生效的问题
常用的解决方法可以百度,我针对我的问题描述一下 Mysql中InnoDB引擎才支持事务, MyISAM不支持事务. 当你尝试了各种方法解决spring中注解式事务不生效时, 一定要查看一下数据库中表的 ...
- 事务特性,事务的隔离级别以及spring中定义的事务传播行为
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- spring aop方式配置事务中的三个概念 pointcut advice advisor
AOP的3个关键概念 因为AOP的概念难于理解,所以在前面首先对Java动态代理机制进行了一下讲解,从而使读者能够循序渐进地来理解AOP的思想. 学习AOP,关键在于理解AOP的思想,能够使用AOP. ...
- Spring 中的 JDBC 事务
Spring 对 JDBC 的支持 JdbcTemplate 简介 •为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. • ...
- Spring中的Jdbc事务管理
Spring提供了对事务的声明式事务管理,只需要在配置文件中做一些配置,即可把操作纳入到事务管理当中,解除了和代码的耦合. Spring声明式事务管理,核心实现就是基于Aop. Spring声明式事务 ...
- spring的annotation-driven配置事务管理器详解
http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html ——————————————————————————————————————————————— ...
- JavaWeb_(Spring框架)Spring中的aop事务
1.事务相关知识 a)什么是事务:把多条数据库操作捆绑到一起执行,要么都成功,要么都失败: b)事务的原则ACID: i.原子性:事务包含的所有操作,要么全部成功,要么全部失败回滚,成功全部应用到数据 ...
- Velocity初探小结--Velocity在spring中的配置和使用
最近正在做的项目前端使用了Velocity进行View层的数据渲染,之前没有接触过,草草过了一遍,就上手开始写,现在又回头细致的看了一遍,做个笔记. velocity是一种基于java的模板引擎技术, ...
随机推荐
- Python常用工具PyCharm
PyCharm 是我用过的python编辑器中,比较顺手的一个.而且可以跨平台,在macos和windows下面都可以用,这点比较好. 首先预览一下 PyCharm 在实际应用中的界面:(更改了PyC ...
- noip 2010 三国游戏
三国游戏 三国游戏 描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有N 位武将(N为偶数且不小于4),任 ...
- 手动删除Win7系统服务列表中残留服务的操作步骤
卸载tomcat的时候服务用cmd运行不能删除 需要用管理员才能删除 手动删除Win7系统服务列表中残留服务的操作步骤分享给大家,在使用深度Win7系统过程中,将一些程序删除后,有些在服务列表中还会残 ...
- [LeetCode] Sort List 排序 sort
Sort a linked list in O(n log n) time using constant space complexity. Hide Tags Linked List Sort ...
- 使用log4j2分离系统日志与业务日志
前一篇文章介绍了log4j2 扩展日志级别,支持将系统日志与业务处理日志拆分,现在介绍一下通过日志级别将系统日志与业务日志分类,要达到这个目的很容易,只需要配置一下log4j的xml文件: <? ...
- hdu 5109(构造数+对取模的理解程度)
Alexandra and A*B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 常用PHP数组函数总结
1.array_values() 以索引数组的形式返回数组的中所有元素的值 array_keys() 以索引数组的形式返回数组的中所有元素的值 2.in_array() 检查数组中是否存在某值 ...
- localize by triangle note
1.当拟合结果不为1时,取和上次相近的作为结果2.python画三角拟合图bug (3.减小三角拟合波动:对激光雷达数据进行滤波等处理)(4.在计算三角起始和结束位置时,添加用距离值过滤) theta ...
- POJ 2914 Minimum Cut (全局最小割)
[题目链接] http://poj.org/problem?id=2914 [题目大意] 求出一个最小边割集,使得图不连通 [题解] 利用stoerwagner算法直接求出全局最小割,即答案. [代码 ...
- 四. Java继承和多态5. instanceof 运算符
多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 . C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符. insta ...