Hibernateでは、トランザクション管理は非常に標準的ですが、Hibernateによってスローされた例外は
FATAL
であることを覚えておいてください。トランザクションをロールバックして直ちに現在のセッションを閉じる必要があります。
以下はHibernateトランザクションテンプレートです:
Session session = null;
Transaction tx = null;
try{
session = HibernateUtil.getSessionFactory().openSession();
tx = session.beginTransaction();
tx.setTimeout(5);
//doSomething(session);
tx.commit();
}catch(RuntimeException e){
try{
tx.rollback();
}catch(RuntimeException rbe){
log.error("Couldn’t roll back transaction", rbe);
}
throw e;
}finally{
if(session!=null){
session.close();
}
}