Java是一门面向对象编程语言。

Java编程事务规范

1.不要总是去新启动一个事务(除非你真的需要)

尽量使用 Propagation.REQUIRED 默认代替 Propagation.REQUIRES_NEW。如果你(真的)需要在自己的事务上下文中执行业务请使用 Propagation.NESTED  

2.不得使用事务超时时间

@Transactional(rollbackFor=Exception.class,propagation=Propagation.REQUIRED,timeout=2) public class FlatsFacadeImpl 

不要指定超时时间,你控制不了!

3.任何时候不要去改隔离级别

最好的事务添加方式,在需要加事物的方法上加 @Transactional(rollbackFor=Exception.class) 

一定要加rollbackFor=Exception.class

4.只读接口不允许使用事务

只读接口不允许使用事务,更不得使用只读事务。

为了确保可重复读而使用只读事务,只能是自欺欺人的行为。

其实这完全可以通过缓存来解决。而且引入不必要的事务,会引起连接无法及时释放。

5.严禁在事务中访问第三方

严禁在事务中访问第三方。因为只要进入了Transactional,哪怕没有任何SQL语句,都会占用数据库连接。所以,一旦在事务中访问第三方,第三方的故障可能会导致我方的数据库连接被大量占用。会产生灾难性的结果。  

6.事务下沉

推荐事务下沉到service级别,不在facade层进行控制。在服务化阶段这将是强制规则。

届时,多个service将意味着多个jvm/db,facade层完全无法控制事务。

7.事务粒度最小化

为了尽量少占用数据库连接,需要将事务粒度最小化。对于大多数场景/模块而言,可以不使用事务。只有账务等极少数场景是必须使用事务的。

当前位置:Java教程网 »
本文地址:http://www.javajcw.com/85.html
喜欢 or
默认图片
发表我的评论
取消评论