JPA事务

来源:互联网 发布:阶乘java递归方法 编辑:程序博客网 时间:2024/06/16 06:43

1)        基本概念

事务特性ACID:原子性、一致性、隔离性、持久性

事务的分类:JTA事物,Resource_Local事务

2)        数据事务并发带来的问题

脏读:事务读取了其他事务还未提交的数据

不可重复读:同一个事务先后两次或两次以上的相同查询,每次查询的结果不一样

幻读:跟不可重复的类似(另一个插入后导致读取的条目数不一样)

不可重复读和幻读区别:不可重复读在于记录的值,幻读在于记录的数量

3)        事务的传播特性

PROPAGATION_MANDATORY:方法必须在事务中进行,如果当前没有事务,就抛出异常。

PROPAGATION_NESTED:如果当前存在事务,方法则在嵌套事务内执行,嵌套事务可以独立提交或回滚

PROPAGATION_NEVER:该方法不能运行在事务中

PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。最常见的选择

PROPAGATION_SUPPORTS:不需要事务的支持,如果当前存在事务,就在当前事务中执行

PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

4)        事务的隔离级别

ISOLATION_DEFAULT: 数据库设置的隔离级别

ISOLATION_READ_UNCOMMITTED:会出现脏读、不可重复读、幻读(隔离级别最低,并发性能高)

ISOLATION_READ_COMMITTED:会出现不可重复读、幻读问题(锁定正在读取的行)

ISOLATION_REPEATABLE_READ:会出幻读(锁定所读取的所有行)

ISOLATION_SERIALIZABLE:串行执行,完全服从ACID的事务隔离级别(锁表)

5)        如何使用?

通过aop配置或注解方式

0 0