说到Hibernate中的Session和Transaction的概念前, 我们先看看以下以下的场景:
- 有一天,小明到银行办理业务,轮到小明时,他办理了两个业务:
- 第一个业务,他存了1000元钱
- 第二个业务,他取了200元钱
- 最后,他离开了银行
上面的场景其实与Session和Transaction息息相关。
- 小明到银行办理业务,轮到小明时,即开始了一个Session
- 小明办理第一个业务:存钱。实际上开始了一个Transaction
- 小明第一个业务:存钱结束后,即Transaction提交了
- 小明开始办理第二个业务:取钱。实际上开始了又一个Transaction
- 小明的第二个业务:取钱结束后,即新的Transaction提交了
- 小明离开银行,即代表了关闭了这个Session
最后,看一下Hibernate中Transaction的模板代码:
Session session = null;
Transaction tx = null;
try{
session = HibernateUtil.getSessionFactory().openSession();
tx = session.beginTransaction();
//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();
}
}
网友评论