EJB的事务管理建立在JTA事务基础之上,应用服务器(如:JBOSS)会负责处理事务管理的底层细节,而EJB开发者只要决定事务边界即可。下面将从特性,隔离级别,传播特性来总结有关事务的内容。
特性
ACID
原子性:不可再分。
一致性:数据库始终处于一个正确的状态。
隔离性:并行事务之间互不干扰。
持久性:事务一旦提交,对数据的改变,将会持久化到数据库。
隔离级别
当两个或者多个操作(或事务)操作同一个数据时,可能引起访问的冲突和数据的不一致。上面说的隔离性实际上意味着数据库如何处理并发操作的问题。我们需要通过隔离级别来告诉数据库如何处理各种冲突情况。
未提交读:允许事务A读取另一个事务B未提交的数据。如果事务B后来将事务回滚了。那么事务A刚才读到的数据就是脏数据。即脏读。
提交读:这种隔离级别保证所有读到的数据都是已经提交到的数据。但是这种情况会发生不可重复读。如:事务A读取了某条数据,事务B对该数据进行了修改,并已提交,这是A事务再读取该条数据时,就会发现两次读的数据不一样。即不可重复读。
可重复读:可以避免脏读和不可重复读。但是当A事务读取了某一范围的数据,如果B事务对这一范围的数据进行了插入或删除(注意