我有一个函数 利用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中的操作已经进入数据库了
把这两个都去掉看一下
try {
//省略部分处理代码
session.update(obj);
//省略部分处理代码
this.function2(session);
//省略部分处理代码
session.update(obj);
//省略部分处理代码
session.flush();
}
catch (Exception e) {
tx.rollback();
return false;
}
}改成这样试一下
这个肯定不行 我有可能是在function1中产生的错误 我需要function2也会滚