我有一个函数 利用hibernate做持久层处理
处理的东西很多 我就分成了三个方法
要求是 任何一个方法中出现问题 整个数据都回滚 我该怎样做
大概写个模型 但是这样实现函数内的更新已经写进数据库了public boolean function1(){
Session session = dbDao.getHibernateTemplate().getSessionFactory()
.openSession();
Transaction tx = session.beginTransaction();
try {
//省略部分处理代码
session.update(obj);
//省略部分处理代码
this.function2(session);
//省略部分处理代码
session.update(obj);
//省略部分处理代码
session.flush();
tx.commit();
return true;
} catch (Exception e) {
tx.rollback();
return false;
} finally {
session.close();
}
}
public boolean function2(Session session){
try {
//省略部分处理代码
session.update(obj);
//省略部分处理代码
this.function2(session);
//省略部分处理代码
session.update(obj);
//省略部分处理代码
session.flush();
}
}大概就是这样 现在的情况是 一旦在function1中出现异常 function1中操作的数据能回滚 function2中的操作已经进入数据库了
处理的东西很多 我就分成了三个方法
要求是 任何一个方法中出现问题 整个数据都回滚 我该怎样做
大概写个模型 但是这样实现函数内的更新已经写进数据库了public boolean function1(){
Session session = dbDao.getHibernateTemplate().getSessionFactory()
.openSession();
Transaction tx = session.beginTransaction();
try {
//省略部分处理代码
session.update(obj);
//省略部分处理代码
this.function2(session);
//省略部分处理代码
session.update(obj);
//省略部分处理代码
session.flush();
tx.commit();
return true;
} catch (Exception e) {
tx.rollback();
return false;
} finally {
session.close();
}
}
public boolean function2(Session session){
try {
//省略部分处理代码
session.update(obj);
//省略部分处理代码
this.function2(session);
//省略部分处理代码
session.update(obj);
//省略部分处理代码
session.flush();
}
}大概就是这样 现在的情况是 一旦在function1中出现异常 function1中操作的数据能回滚 function2中的操作已经进入数据库了
解决方案 »
- 有使用过jsf客户端验证的Shale Framework吗?
- 请教关于缓存(或许是缓存)的问题
- 用JDBC连接数据库,为什么上传附件的BLOB会出现数据丢失的现象啊,急啊,谢谢大家啊
- Help Me
- java.lang.NoClassDefFoundError: net/sf/hibernate/HibernateException
- 用ecplpse构建ejb 出现以下错误
- hibernate第一个例子报错
- ■■struts标签如何使用css美化呢,大家指教一下,例如:■■
- 怎么知道当前服务器上有哪些bean可以用?weblogic控制台可以看到模块,但我要看到里面有哪些bean
- 关于安装的问题!
- 关于java国际化的问题,烦恼了好久
- 自定义标签
把这两个都去掉看一下
try {
//省略部分处理代码
session.update(obj);
//省略部分处理代码
this.function2(session);
//省略部分处理代码
session.update(obj);
//省略部分处理代码
session.flush();
}
catch (Exception e) {
tx.rollback();
return false;
}
}改成这样试一下
这个肯定不行 我有可能是在function1中产生的错误 我需要function2也会滚