在我们的应用程序中,我们主要使用Spring @Transactional注释以及JpaTemplate和Hibernate进行数据库交互。但是,项目的一部分与不同的数据库通信,因此我们不能在此使用@Transactional,因为需要不同的transactionManager。
在这里,对于数据库更新,我们使用PlatformTransactionManager在代码中显式创建事务,并在调用JpaTemplate.execute(JpaCallback)之后提交或回滚。
我已经注意到代码的这个区域中的一些地方,我们不是为了读取而执行此操作,而是简单地调用JpaTemplate.execute(JpaCallback)而不包装在事务中。我想知道这有什么危险。我感谢必须创建一个事务,因为没有事务就不能运行数据库查询,但是因为我们的代码中没有任何东西试图提交,是否有可能持有资源?