根据我的理解,交易一旦完成就不会立即刷新。它们位于内存中的缓存中,只有当EntityManager确定这样做是符合成本效益时才会写入数据库。我相信在这种情况下会使用L1缓存,但如果我错了,请纠正我。
我的问题是,在分布式环境中,Persistence Context使用的缓存是分布式的吗?
答案 0 :(得分:2)
L1缓存(会话缓存,持久性上下文)始终以相同的方式工作,无论您的环境是否分布。会话缓存属于会话,您可以在同一台计算机上或不同的计算机上拥有多个会话,因此无关紧要。
在分布式环境中,如果使用二级缓存,则需要关注它。
如果在群集中运行应用程序,则需要使用支持群集的L2缓存实现,如果JPA提供程序支持它(例如,请参阅Hibernate文档中的21.2. The Second Level Cache)。
如果您有其他应用程序访问同一个数据库,您需要仔细配置缓存策略,以避免在关键情况下出现不一致,并在其他情况下容忍可能的不一致。