一尘不染

休眠@Transactional和ehcache @Cacheable的组合总是创建数据库事务

hibernate

在我们的应用程序上进行负载测试时,我注意到,如果您使用@Transactional和@Cacheable注释,则hibernate将始终创建数据库事务。有防止这种情况的简便方法吗?在Spring中解决此问题的一种更巧妙的方法是拥有以下类/接口

  • 服务层接口
  • 可缓存的带注释的类,只是一个代理/转发给
  • 事务注释执行级别

发生了以下情况

通话1:

  1. 交易被创建
  2. 类方法被调用
  3. 结果缓存并返回

通话2:

  1. 交易被创建
  2. 缓存的结果被返回

首选结果应为:

通话1:

  1. 交易被创建
  2. 类方法被调用
  3. 结果缓存并返回

通话2:

  1. 缓存的结果被返回

阅读 428

收藏
2020-06-20

共1个答案

一尘不染

您需要更改@Transactional@Cacheable方面的相对顺序。

可以使用和的order属性进行配置。有关订单值的含义,请参见8.2.4.7建议订购<tx:annotation-driven>``<cache:annotation- driven>

2020-06-20