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

时间:2012-05-21 10:31:37

标签: spring hibernate annotations ehcache

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

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

以下

会发生什么

致电1:

  1. 创建交易
  2. 类方法被调用
  3. 结果缓存&返回
  4. 致电2:

    1. 创建交易
    2. 返回缓存结果
    3. 首选结果应为:

      致电1:

      1. 创建交易
      2. 类方法被调用
      3. 结果缓存&返回
      4. 致电2:

        1. 返回缓存结果

1 个答案:

答案 0 :(得分:10)

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

可以使用order<tx:annotation-driven>的{​​{1}}属性对其进行配置。有关订单值的含义,请参阅8.2.4.7 Advice ordering