学过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中如何配置事务的更多相关文章

  1. Spring框架学习(10)Spring中如何使用事务?

    内容源自:Spring中如何使用事务? 一.为什么要使用事务? 如果我们一个业务逻辑只执行一次sql,是不需要使用事务的.但如果要执行多条sql语句才能完成一个业务逻辑的话,这个时候就要使用事务了. ...

  2. spring中注解式事务不生效的问题

    常用的解决方法可以百度,我针对我的问题描述一下 Mysql中InnoDB引擎才支持事务, MyISAM不支持事务. 当你尝试了各种方法解决spring中注解式事务不生效时, 一定要查看一下数据库中表的 ...

  3. 事务特性,事务的隔离级别以及spring中定义的事务传播行为

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  4. spring aop方式配置事务中的三个概念 pointcut advice advisor

    AOP的3个关键概念 因为AOP的概念难于理解,所以在前面首先对Java动态代理机制进行了一下讲解,从而使读者能够循序渐进地来理解AOP的思想. 学习AOP,关键在于理解AOP的思想,能够使用AOP. ...

  5. Spring 中的 JDBC 事务

    Spring 对 JDBC 的支持 JdbcTemplate 简介 •为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. • ...

  6. Spring中的Jdbc事务管理

    Spring提供了对事务的声明式事务管理,只需要在配置文件中做一些配置,即可把操作纳入到事务管理当中,解除了和代码的耦合. Spring声明式事务管理,核心实现就是基于Aop. Spring声明式事务 ...

  7. spring的annotation-driven配置事务管理器详解

    http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html ——————————————————————————————————————————————— ...

  8. JavaWeb_(Spring框架)Spring中的aop事务

    1.事务相关知识 a)什么是事务:把多条数据库操作捆绑到一起执行,要么都成功,要么都失败: b)事务的原则ACID: i.原子性:事务包含的所有操作,要么全部成功,要么全部失败回滚,成功全部应用到数据 ...

  9. Velocity初探小结--Velocity在spring中的配置和使用

    最近正在做的项目前端使用了Velocity进行View层的数据渲染,之前没有接触过,草草过了一遍,就上手开始写,现在又回头细致的看了一遍,做个笔记. velocity是一种基于java的模板引擎技术, ...

随机推荐

  1. python登录知乎

    #coding:utf-8 import requests import urllib3 import time class Zhihu: def __init__(self): self.login ...

  2. [LeetCode] Evaluate Reverse Polish Notation stack 栈

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  3. ANDROID开发笔记(二)

    动机: 开发的一个背单词的软件. 不会实现划屏的特性. 方法: 第一步尝试: 在MainActivity中, 增加以下代码后, 如果在视图的空白处点击时, 文本框中的时间就会发生改变. @Overri ...

  4. Use NSArray to specify otherButtonTitles?

    http://stackoverflow.com/questions/1602214/use-nsarray-to-specify-otherbuttontitles UIAlertSheet's c ...

  5. xen hypercall 的应用层实现

    一句话描述: xen hypercall 在应用层的实现,最终都变成对  /proc/xen/privcmd 的 ioctl 系统调用 我们知道,xen 在应用层最上层的接口是 libxl , 基本上 ...

  6. 转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】

    转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至 ...

  7. linux 内核库函数 【转】

    转自:http://blog.chinaunix.net/uid-20321537-id-1966892.html 当编写驱动程序时,一般情况下不能使用C标准库的函数.Linux内核也提供了与标准库函 ...

  8. RxVolley报错:Caused by: java.lang.RuntimeException: RequestQueue-> DiskBasedCache cache dir error

    Caused by: java.lang.RuntimeException: RequestQueue-> DiskBasedCache cache dir error 这是因为SD卡动态权限导 ...

  9. Linux安转scala

    1. 创建目录 > mkdir  /opt/scala > cd  /opt/scala 2. 下载scala压缩包到上述目录 scala-2.12.6.tgz 3. 解压缩.建立软连接 ...

  10. c语言自动对齐原则

    转载一篇博客: http://blog.csdn.net/hairetz/article/details/4084088 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员, ...