我在持久化到Oracle DBMS的web应用程序中使用JPA的Hibernate实现。如果我有一个服务方法,它插入了一些使用Spring声明性事务注释(@ transaction )的数据,那么何时将更改提交到DBMS?如果有数以千计的线程使用此服务方法插入数据,而服务器崩溃(类似OutOfMemory异常),那么已插入但未提交的事务会发生什么情况?它与JDBC有区别吗?
发布于 2013-07-08 12:04:33
通常,提交发生在EntityManager关闭之前(如果调用者没有被解压,则在使用@Transaction修饰的方法的末尾)。如果使用hibernate/JPA,您可以通过将以下记录器设置为debug来调试事务begin/commits/rollback:
org.hibernate.transaction=DEBUG
org.hibernate.engine.transaction=DEBUG # Hibernate 4.2.2 or higher通常,当运行时异常发生时,您的事务将回滚,但这取决于您的配置/设置。
https://stackoverflow.com/questions/17514670
复制相似问题