Spring-事务管理重点
Posted vwvwvwgwg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-事务管理重点相关的知识,希望对你有一定的参考价值。
Spring-事务管理
事务的提交和回滚 交给spring
一.简述
JavaEE开发中,事务位于Service层,
由程序判断:出现异常事务回滚,未出异常事务提交。
Spring使用AOP技术进行事务控制,自行帮开发人员适时提交或者回滚事务
Spring:service层未出异常,事务自动提交
Service层出现异常,事务自动回滚
二.Spring事务的操作
环境搭建,详见下篇spring和MyBatis的整合噢
测试类:
/**
* 查询所有用户信息
*/
@Test
public void run1(){
List<User> ulist = userService.selectAll();
for (User user : ulist) {
System.err.println(user);
}
}
Service类:
/**
* 查询所有用户信息
* @return
*/
@Override
public List<User> selectAll() {
return userDao.selectAll();
}
- 添加用户:
测试类:
/**
* 添加一条用户信息
*/
@Test
public void run2(){
int row = userService.saveUser(new User("009","小张","123"));
System.err.println("添加成功了:"+row);
}
Service类:
@Override
public int saveUser(User user) {
return userDao.insert(user);
}
- 修改用户:
Test:
@Test
public void run3(){
//创建一个用户对象
user user = new user("222", "aaa", "1111");
//调用service
int row=service.updateUser(user);
System.err.println(row);
}
Service:
@Override
public int updateUser(user user) {
int i = dao.updateByPrimaryKey(user);
return i;
}
删除用户:
Test:
@Test
public void run4(){
int row= service.deleteUser("222");
System.err.println(row);
}
Service:
@Override
public int deleteUser(String s) {
int i = dao.deleteByPrimaryKey(s);
return i;
}
小结:
通过
管理方式:
Service方法未出异常,事务自动提交
Service方法出了异常,事务自动回滚
开发中,为了提升程序运行效率,建议DQL查询语句 和 DML增删改语句使用不同类型的事务。
注解 |
描述 |
@Transactional(readOnly=true) |
只读事务、提升运行效率,DQL使用 |
@Transactional(readOnly=false) |
默认值,非只读事务,可以进行增删改操作。DML使用 |
修改后的service类:
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
/**
* 查询所有用户信息
* @return
*/
@Transactional(readOnly = true)
@Override
public List<User> selectAll() {
return userDao.selectAll();
}
@Override
public int saveUser(User user) {
return userDao.insert(user);
}
}
默认值是-1,没有超时限制。如果有,以秒为单位进行设置。(一般不设置)
注解 |
描述 |
@Transactional(timeout=60) |
设置超时为60秒,如果还没有操作结束,将抛异常。 |
总的来说:
Spring事务管理:(AOP)
Spring配置类:开启事务管理
Service层:@Transactional: 标记当前类的事务由spring管理
Spring管理事务的方式:
- 如果service方法未出异常,spring会自动提交事务
- 如果service方法出现异常,spring会自动回滚事务
看完恭喜你,又进步了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!
推荐:绥化SEO
以上是关于Spring-事务管理重点的主要内容,如果未能解决你的问题,请参考以下文章