运行时异常发生时JPA句柄如何提交

时间:2013-07-07 17:53:34

标签: java hibernate jpa jdbc

我正在使用持久存储到Oracle DBMS的Web应用程序中的JPA的Hibernate实现。如果我有一个服务方法插入一些使用Spring声明式事务注释(@Transaction)的数据,那么更改何时提交给DBMS?如果我有数千个线程使用此服务方法插入数据并且服务器崩溃(类似于OutOfMemory异常),那么已经插入但未提交的事务会发生什么?它与JDBC不同吗?

1 个答案:

答案 0 :(得分:1)

通常在EntityManager关闭之前发生提交(如果调用者没有被解析,则在用@Transaction修饰的方法的末尾)。如果使用hibernate / JPA,您可以通过将以下记录器设置为DEBUG来调试事务开始/提交/回滚:

org.hibernate.transaction=DEBUG 
org.hibernate.engine.transaction=DEBUG # Hibernate 4.2.2 or higher

通常,当发生运行时异常时,您的事务将被回滚,但这取决于您的配置/设置。