今天遇到一个问题,调用REST接口GET数据过程中对Hibernate缓存的部分对象做了修改操作,结果接口调用完毕后针对缓存对象的修改操作居然被固化到数据库中去了。反复查看后才发现方法的外层居然以@Transactional注解的方式开启了事务。关闭事务就一切正常了,查询时不要开启事务。
本文探讨了在使用Hibernate缓存时遇到的一个问题:在未开启事务的情况下,对缓存对象进行修改后,修改结果在接口调用结束后仍然被持久化到数据库中。通过分析发现,问题源于接口方法外部的@Transactional注解导致的隐式事务开启。关闭事务后,问题得以解决。
今天遇到一个问题,调用REST接口GET数据过程中对Hibernate缓存的部分对象做了修改操作,结果接口调用完毕后针对缓存对象的修改操作居然被固化到数据库中去了。反复查看后才发现方法的外层居然以@Transactional注解的方式开启了事务。关闭事务就一切正常了,查询时不要开启事务。
1286

被折叠的 条评论
为什么被折叠?