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

use*_*117 7 spring annotations hibernate ehcache

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

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

会发生什么是以下情况

致电1:

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

电话2:

  1. 交易得到了创造
  2. 返回缓存结果

首选结果应为:

致电1:

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

电话2:

  1. 返回缓存结果

axt*_*avt 10

您需要更改相关顺序@Transactional@Cacheable方面.

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