Java持久性中的事务性和非事务性缓存

Sri*_*ram 3 java persistence caching transactions transactional

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

它们之间有什么区别?

Sri*_*ram 5

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

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

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

在非事务性高速缓存中,对象/数据在没有任何锁定的情况下被一个接一个地更新。这意味着在很短的一段时间内,缓存中的数据与数据库不一致。

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