如果Hibernate会话从缓存中读取,任何避免事务提交的方法?

时间:2014-12-04 03:58:03

标签: java hibernate caching transactions

我正在使用Hibernate事务从db进行读取操作,如下面的示例代码:

Session session = sessionFactory.openSession();    
Transaction tx= session.beginTransaction();
session.get(Account.class, new Long(id));
tx.commit(); //Actually I use tx.rollback()
session.close();

由于二级缓存,在第一次从db读取后从高速缓存中获取结果。但是在调用session.beginTransaction()时会分发数据库连接,并且会在数据库中执行下一个commit语句,这会显着降低性能(与不使用事务时的情况相比)。

那么有没有可能的方法知道结果将从二级缓存中读取,这样我就可以避免进行提交甚至使用新的数据库连接?

1 个答案:

答案 0 :(得分:0)

假设您正在使用spring transaction support,请尝试使用SUPPORTS传播级别吗?

@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)