我正在使用Spring并使用hibernate和JPA。当我为我的方法提供事务上下文时,我想知道它是如何工作的。例如,我有一些实体类人员。我创建了一个人bob
并坚持实体。如果我打电话给getPersonByName("bob")
它会在交易结束前返回bob吗?
答案 0 :(得分:0)
简短的回答是:这取决于您的读取操作的执行方式。
您可以打开日志记录并设置测试工具以自行查看。您可以关注these instructions to enable SQL queries and parameters printing。
2个警告:
@Transactional
方法中使用默认传播级别)时处于事务边界内在Hibernate中,默认情况下会激活第一级缓存。它链接到Hibernate Session ,并且由它获取的所有实体都存储在Session中。 因此,写入后的后续读取不应该在同一个Session 中往返于DB。
现在,默认情况下不使用Hibernate的第一级缓存,除非您使用: