文档章节

事务为什么加在service层而不加在dao层

architect刘源源
 architect刘源源
发布于 06/14 19:13
字数 523
阅读 31
收藏 0
什么是事务?
在数据库中,所谓事务是指一组逻辑操作单元即一组sql语句。当这个单元中的一部分操作失败,整个事务回滚,只有全部正确才完成提交。判断事务是否配置成功的关键点在于出现异常时事务是否会回滚

事务四大特性
1. 原子性(Atomicity) 
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

2. 一致性(Consistency) 
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。(数据不被破坏

3.隔离性(Isolation) 
事务的隔离性是指一个事务的执行不能被其他事务干扰.

4.持久性(Durability) 
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的.即使系统重启也不会丢失.

结合事务的特点,为什么加在service层就很好解释了。如果我们的事务注解@Transactional加在dao层,那么只要与数据库做增删改,就要提交一次事务,如此做事务的特性就发挥不出来,尤其是事务的一致性,当出现并发问题是,用户从数据库查到的数据都会有所偏差。 
一般的时候,我们的service层可以调用多个dao层,我们只需要在service层加一个事务注解@Transactional,这样我们就可以一个事务处理多个请求,事务的特性也会充分的发挥出来。

 

© 著作权归作者所有

architect刘源源

architect刘源源

粉丝 164
博文 518
码字总数 922877
作品 0
浦东
程序员
私信 提问
跨库事务

一个service操作不同库的dao,会发生跨库事务吗,如果异常能不能正常回滚,事务加在service层

千元机爱好者
2018/11/19
57
2
求javaweb大神,关于事务配置问题,求戳入指导~

我之前加事务@transction这个注解的时候都是加在service层,官方规定也是加在这里,可是很不幸,我的逻辑很多都写在了controller层,比如我controller层经常会这样: userService.add.... us...

上帝爱众生
2015/04/22
121
0
spring 事务控制

一、Spring中事务的配置(applicationContext.xml) <!-- 事务配置 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propert......

LYQ1990
2016/04/19
8
0
Spring Boot MyBatis 动态数据源切换、多数据源,读写分离

项目地址 https://github.com/helloworlde/SpringBoot-DynamicDataSource 本项目使用 Spring Boot 和 MyBatis 实现多数据源,动态数据源的切换;有多种不同的实现方式,在学习的过程中发现没...

呜呜呜啦啦啦
2017/12/21
0
0
spring cloud RestTemplate消费者使用Hystrix进行容错和服务降级

spring cloud RestTemplate消费者使用Hystrix进行容错和服务降级 (1)消费者如下 要解决的问题: (a)降级方法可以重定向吗? 可以. ?a 借助于org.springframework.web.client.RestTemplate (b)...

黄威
2018/06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL在启动时如何分配共享缓存

相信很多人知道 shared_buffers 这个参数,它设置共享缓存的大小,本篇简单讲一下它是怎样分配的。 1、参数设置(src/backend/utils/misc/guc.c) /* * We sometimes multiply the numbe...

有理想的猪
14分钟前
0
0
jsonFormat注解导致时间后台和页面差8小时

阿里云提醒fastjson < 1.2.51 远程代码执行漏洞。 jar包升级1.1.40升级到1.2.58后前台和后台拿到的时间数据差8小时。 解决方法,在实体注解上添加内容 @JsonFormat(pattern = "yyyy-MM-dd HH...

S三少S
14分钟前
36
2
Linux全自动网络安装 —— PXE

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 网络装机的优势: 1).规模化:同时装配多台主机; 2).自动化:自动装系统、配置等各种服务; 3).远程实现...

迷失De挣扎
26分钟前
4
0
Spark利用Broadcast实现Join避免Shuffle操作

在Spark中, 诸如ReduceByKey,GroupByKey等操作会触发Shuffle, 影响性能。 本文提供了一种利用广播Broadcast, 实现了join操作, 避免了Shuffle。 正常的join操作 val sc = new Spark...

dreamness
32分钟前
1
0
在 Vivado 中使用 Synopsys VCS 运行仿真

了解如何在 Vivado 中使用 Synopsys VCS simulator 运行仿真。我们将演示如何编译仿真库、为 IP 或整个项目生成仿真脚本,然后运行仿真。 http://xilinx.eetop.cn/viewnews-3057 基于 Zynq 的...

whoisliang
52分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部