你在读取数据时是否需要数据库事务?

7 浏览
0 Comments

你在读取数据时是否需要数据库事务?

当我尝试从数据库读取数据时,至少使用((Session)em.getDelegate()).createCriteria(),会抛出一个异常,表示事务不存在。当我添加注解:

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

之后,就可以正常工作了。然而,由于读取操作会以每秒百万次的频率进行访问和读取数据,我希望确保我们的环境不会不必要地被阻塞。如果没有,创建只读Propagation.Supports事务的成本是多少?在使用Spring的情况下,我是否可以在没有事务的情况下创建Hibernate Criteria查询?

0