11

在对我们的应用程序进行负载测试时,我注意到如果您使用 @Transactional 和 @Cacheable 注释,休眠总是会创建一个数据库事务。有没有简单的方法来防止这种情况?在 spring 中解决这个问题的一种更简单的方法是使用以下类/接口

  • 服务层接口
  • 可缓存的注释类,它只是一个代理/转发到
  • 事务注解实现类

会发生以下情况

呼叫 1:

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

呼叫 2:

  1. 事务被创建
  2. 缓存的结果被返回

首选结果应该是:

呼叫 1:

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

呼叫 2:

  1. 缓存的结果被返回
4

1 回答 1

12

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

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

于 2012-05-21T11:03:38.297 回答