在我的一个Servlet中,需要调用两BEAN,这两个BEAN都有数据库操作,我怎样实现事务呢?????

jd29323 2002-07-06 04:03:13
在我的一个servlet中有类似下面的语句:
BeanA a=new BeanA()
a.setXXX(XXX);
....
BeanB b=new BeanB()
b.setXXX(XXX);
....
a.insertSomthing();
b.insertSomthing();
....
也就是说,a和b就进行一个数据库的插入操作,
现在,我希望能作到不论在a和b中哪个插入操作出现错误,都可以全部回滚,
请问,应该怎么办?
...全文
26 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashroom 2003-03-15
  • 打赏
  • 举报
回复
try {
}catch(SQLException se) {
Conn.rollback();
}finally {
Conn.closeConnection();
}
Eckal 2003-03-14
  • 打赏
  • 举报
回复
用容器事务,不要用数据库事务
z3h 2002-07-09
  • 打赏
  • 举报
回复
最好你的所有insert都不要自己创建Connection,都通过参数传递进去,这样你就可以很容易的控制事务了。用一个Connection将所有数据操作串起来。


这种办法可行。但是不要忘了
try{
con.setAutoCommit(false);
}finally {
con.setAutoCommit(true);
con.close();
}
gfzhx 2002-07-08
  • 打赏
  • 举报
回复
最好你的所有insert都不要自己创建Connection,都通过参数传递进去,这样你就可以很容易的控制事务了。用一个Connection将所有数据操作串起来。
ch_gaofei 2002-07-08
  • 打赏
  • 举报
回复
事务要放在单独的类中控制
和数据库操作的类只负责执行语句
你的bean 必须修改
iis40 2002-07-08
  • 打赏
  • 举报
回复
可以用JTA
daehappy 2002-07-07
  • 打赏
  • 举报
回复
up!gz!
jd29323 2002-07-06
  • 打赏
  • 举报
回复
可能我没说清楚
在这个SERVLET中,只是做调用其他BEANS的操作,并没有任何数据库的操作
数据库的操作都封装在这些被调用的BEANS中了,这种情况下:
Conn.getConnection(); //连接数据库
Conn.setAutoCommit(false);
BeanA a=new BeanA()
a.setXXX(XXX);
....
BeanB b=new BeanB()
b.setXXX(XXX);
....
a.insertSomthing();
b.insertSomthing();
....
Conn.commit();

这样的办法不适合的!!!!
homey123 2002-07-06
  • 打赏
  • 举报
回复
是啊,为什么要分开?用一个事物!
z3h 2002-07-06
  • 打赏
  • 举报
回复
既然是一个事务为为什么要分开在两个bean中呢?
Andrawu 2002-07-06
  • 打赏
  • 举报
回复
try {
Conn.getConnection(); //连接数据库
Conn.setAutoCommit(false);
BeanA a=new BeanA()
a.setXXX(XXX);
....
BeanB b=new BeanB()
b.setXXX(XXX);
....
a.insertSomthing();
b.insertSomthing();
....
Conn.commit();
}catch(SQLException se) {
Conn.rollback();
}finally {
Conn.closeConnection(); //关闭数据库连接
}

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧