use*_*188 2 java hibernate exception rollback
如果在调用commit期间我有Hibernate异常.在catch块中,如果使用clear,则需要回滚吗?
例如
EntityTransaction t = em.getTransaction();
t.begin();
try {
...
t.commit();
} catch (StaleObjectStateException ex) {
... // rollback needed?
} finally {
t.clear();
}
Run Code Online (Sandbox Code Playgroud)
代替
EntityTransaction t = em.getTransaction();
t.begin();
try {
...
t.commit();
} catch (StaleObjectStateException ex) {
if (t.isActive()) {
t.rollback();
}
}
Run Code Online (Sandbox Code Playgroud)
有什么区别,你会如何决定使用哪个?
谢谢
当发生hibernate异常时,Hibernate本身会在该会话中进行回滚.这意味着t.rollback()在catch语句中没有必要.
事件更多,当发生hibernate异常时,会话实例被破坏,不能再使用了.如果继续使用此实例,那么您将获得StaleStateException.您必须创建一个新的会话实例,而不是clear().
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |