交易& Java持久性中的非事务性缓存

时间:2013-11-26 06:06:44

标签: java caching transactions persistence transactional

什么是事务缓存和非事务缓存?

它们之间有什么区别?

1 个答案:

答案 0 :(得分:4)

JPA支持缓存的不同事务隔离级别,这些级别通常可分为事务性和非事务性。

事务隔离定义了一个操作所做的更改如何对其他并发操作可见。

在事务高速缓存中,事务的更改将作为单个原子单元提交到高速缓存。这意味着对象/数据首先被锁定在缓存中(阻止其他线程/用户访问对象/数据),然后在缓存中更新,然后释放锁。理想情况下,在提交数据库事务之前获取锁,以确保与数据库的一致性。

在非事务性缓存中,对象/数据逐个更新,没有任何锁定。这意味着将有一个短暂的时间段,缓存中的数据与数据库不一致。

某些JPA提供程序可能允许配置其缓存隔离,以支持对缓存的一致性和隔离进行细粒度控制。