当前位置: 技术问答>java相关
关于事务的问题,跟贴有分
来源: 互联网 发布时间:2015-11-04
本文导语: 我现在的设计,只能在一个对象中保持一个事务,也就是说在一个对象的不同方法间保持事务。 但我发现很难做到不同的对象中(这些对象可以是不同的类的实例) 还能保持同一个事务。 比如: a对象,b对象 a.updat...
我现在的设计,只能在一个对象中保持一个事务,也就是说在一个对象的不同方法间保持事务。
但我发现很难做到不同的对象中(这些对象可以是不同的类的实例)
还能保持同一个事务。
比如:
a对象,b对象
a.update(),a.del(),b.del()
这两个方法a.update(),a.del()很容易保持事务,只要在对象中用的是同一个连接就可以拉
但a.update(),b.del()这两个方法怎样设计才能共用一个事务?我总不可能,这两个对象的构造器都都包含Connection参数这样的笨办法吧?!
提示:我需要的是比较好的设计思想,请大家发表高见
但我发现很难做到不同的对象中(这些对象可以是不同的类的实例)
还能保持同一个事务。
比如:
a对象,b对象
a.update(),a.del(),b.del()
这两个方法a.update(),a.del()很容易保持事务,只要在对象中用的是同一个连接就可以拉
但a.update(),b.del()这两个方法怎样设计才能共用一个事务?我总不可能,这两个对象的构造器都都包含Connection参数这样的笨办法吧?!
提示:我需要的是比较好的设计思想,请大家发表高见
|
A,B对象操作数据库
C 负责连接数据库,获取连接
当A需要连接的时候,从C拿出一个Connection来,并且做一个标志
当B也需要连接的时候,就会先判断C刚才那个标志,
这样的话可以做到多个对象保持事务
C 负责连接数据库,获取连接
当A需要连接的时候,从C拿出一个Connection来,并且做一个标志
当B也需要连接的时候,就会先判断C刚才那个标志,
这样的话可以做到多个对象保持事务
|
每个Session应该有一个唯一的ID,可以用来表示用户。
|
在对象的构造里传入一个连接,然后在这个对象里操作数据时就用传进去的连接,这样只要保证传给每个对象的连接是同一个,就可以实现多个对象在同一个事务里。
正如:
Connection conn = ...........
A a = new A(conn);
B b = new B(conn);
还有一种方法是把连接传给类的方法。如:
Connection conn=........
A a=new A();
B b=new B();
事务开始
a.insert(conn);
b.update(conn);
事务结束
我也遇到这样的问题,也想了不少办法。我看jive里这是样用的。所以我也这样用了。 但我感觉还是不舒服
正如:
Connection conn = ...........
A a = new A(conn);
B b = new B(conn);
还有一种方法是把连接传给类的方法。如:
Connection conn=........
A a=new A();
B b=new B();
事务开始
a.insert(conn);
b.update(conn);
事务结束
我也遇到这样的问题,也想了不少办法。我看jive里这是样用的。所以我也这样用了。 但我感觉还是不舒服
|
Connection conn = ...........
A a = new A(conn);
B b = new B(conn);
A a = new A(conn);
B b = new B(conn);
|
呵呵,关注!!!
|
只能用蠢的方法吧
不应该说蠢的,commit两次,rollback两次咯,我都是这样的了
不应该说蠢的,commit两次,rollback两次咯,我都是这样的了
|
up
|
gz
up
up
|
up
|
up
|
在weblogic中使用ejb的时候,要做到这个很容易,因为weblogic本身就支持这种。