我正在使用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语句,这会显着降低性能(与不使用事务时的情况相比)。
那么有没有可能的方法知道结果将从二级缓存中读取,这样我就可以避免进行提交甚至使用新的数据库连接?
答案 0 :(得分:0)
假设您正在使用spring transaction support,请尝试使用SUPPORTS传播级别吗?
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)