HibernateTemplate api说:
...它有能力回归“自动提交”。在事务之外使用时的样式行为
任何人都可以指出发生的地方:
我搜索了一个小时没有成功。我正在寻找在我的应用程序中创建交易的答案,因为据我所知,hibernate要求每次与db的交互都要打开一个事务但是我不打开任何交易我既不使用JTA也不会阅读操作正常。
答案 0 :(得分:1)
All database statements are executed within the context of a physical transaction,即使我们没有明确声明事务边界(BEGIN / COMMIT / ROLLBACK)。数据完整性由ACID properties of database transactions强制执行。
因此,如果您不在逻辑事务(Spring事务拦截器)的上下文中注册当前的工作单元,那么每个DB语句将在单独的数据库物理事务中执行,因此您将在"自动提交"模式。
......它有能力回归“自动提交”。风格行为何时 在交易之外使用
这句话告诉您,您可以在@Transactional上下文中使用TransactionTemplate,甚至也可以不使用事务上下文。因此,您没有义务使用Spring事务划分,尽管for performance reasons you should do so。
因此,您的TransactionTemplate相关代码独立于是否具有当前正在运行的事务上下文。
对于普通的JDBC,如果要在单个数据库事务中注册多个语句,则代码必须显式声明事务边界(begin / commit / rollback)。如果你不这样做,你将在"自动提交"模式。