mysql如何用Java封装事务模式
我正在尝试使用这样的事务模式为我的数据库模型编写DAO
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();
}
}
将此模式封装到具有
//doSomething(session);
作为交易的一部分执行的参数?有时我运行一个查询,有时我对session.saveOrUpdate
进行操作,等等。我有很多DAO要编写,这种代码重复的模式让我感到困扰
编辑
在session
操作和HQL(saveOrUpdate
,delete
等)之间是否有直接映射,所以我只需要传递一个查询就可以了
谢谢你的见解
# 1 楼答案
像这样的事情可能就是你想要的
为要执行的每个查询或查询集创建一个新的
MyQuery
实例或一个新的MyQuery
子类