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登录知乎
#coding:utf-8 import requests import urllib3 import time class Zhihu: def __init__(self): self.login ...
- [LeetCode] Evaluate Reverse Polish Notation stack 栈
Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...
- ANDROID开发笔记(二)
动机: 开发的一个背单词的软件. 不会实现划屏的特性. 方法: 第一步尝试: 在MainActivity中, 增加以下代码后, 如果在视图的空白处点击时, 文本框中的时间就会发生改变. @Overri ...
- Use NSArray to specify otherButtonTitles?
http://stackoverflow.com/questions/1602214/use-nsarray-to-specify-otherbuttontitles UIAlertSheet's c ...
- xen hypercall 的应用层实现
一句话描述: xen hypercall 在应用层的实现,最终都变成对 /proc/xen/privcmd 的 ioctl 系统调用 我们知道,xen 在应用层最上层的接口是 libxl , 基本上 ...
- 转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】
转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至 ...
- linux 内核库函数 【转】
转自:http://blog.chinaunix.net/uid-20321537-id-1966892.html 当编写驱动程序时,一般情况下不能使用C标准库的函数.Linux内核也提供了与标准库函 ...
- RxVolley报错:Caused by: java.lang.RuntimeException: RequestQueue-> DiskBasedCache cache dir error
Caused by: java.lang.RuntimeException: RequestQueue-> DiskBasedCache cache dir error 这是因为SD卡动态权限导 ...
- Linux安转scala
1. 创建目录 > mkdir /opt/scala > cd /opt/scala 2. 下载scala压缩包到上述目录 scala-2.12.6.tgz 3. 解压缩.建立软连接 ...
- c语言自动对齐原则
转载一篇博客: http://blog.csdn.net/hairetz/article/details/4084088 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员, ...