在使用MyEclipse过程中,用Hibernate反向工程生成的DAO有时会发生对象无法存储到数据库,或对象修改后无法存储到数据库的现象。原因是没有运用事务,可以在调用dao对象的代码前后加事务控制,但这样破坏了dao对数据库操作的 例如:
public void save(Resource transientInstance) {
log.debug("saving Resource instance");
try {
Session session = getSession();
Transaction tr = session.beginTransaction(); //开始事务
session.save(transientInstance);
tr.commit(); //提交事务
session.flush(); //清空缓存
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void update(Exam instance) {
log.debug("attaching update Exam instance");
try {
Session session = getSession();
Transaction tr = session.beginTransaction(); //开始事务
session.update(instance);
tr.commit(); //提交事务
session.flush();
log.debug("attachUpdate successful");
} catch (RuntimeException re) {
log.error("attachUpdate failed", re);
throw re;
}
}
封装,让业务层中掺杂了持久层代码。