当我尝试从数据库中读取数据时,至少使用
((Session)em.getDelegate()).createCriteria()
抛出异常是说交易不存在.
当我添加注释时:
@Transactional(
value = SomeClass.TRANSACTIONAL_MANAGER,
propagation = Propagation.SUPPORTS,
readOnly = true
)
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但是,由于读取将每秒发生数百万次访问和读取数据,我想确保我们的环境不会被不必要地堵塞.
如果没有,创建只读Propagation.Supports事务的成本是多少?
没有事务,我可以不与Spring一起创建一个Hibernate Criteria Query吗?
如果我有嵌套的bean方法,它们只是从数据库中获取数据。(即GET API)。那么将所有bean方法标记为会有益TransactionAttributeType.NOT_SUPPORTED吗?JTA不为此管理任何事务,这是否有助于提高性能?