请教关于DAO事务控制

07-06-14 cscs31
在设计DAO的时候,我有个疑问,不知道大家是怎么解决的?

在Client端(Service)调用DAO接口的时候,我想是如下情况

Dao1 d1 = Spring.getBean("dao1");

Dao2 d2 = Spring.getBean("dao2");

d1.save(obj1);

d2.update(obj2);

然后在这个代码的基础上的事务控制,是做在一个地方的,如果写全应该是如下伪代码:

tx = manager.getTransaction();

tx.beginTransaction();

d1.save(obj1);

d2.update(obj2);

tx.commitTransaction();

大概是这个样子,没有写全,在这里事务的控制能否抽象出来在一个地方做?是不是要用AOP来实现?因为每个dao中的方法我不想做事务控制,我感觉dao是一个相对独立的操作。

请大家指教...

[该贴被cscs31于2007年06月15日 12:21修改过]

[该贴被cscs31于2007年06月15日 13:41修改过]

[该贴被cscs31于2007年06月15日 13:43修改过]

         

banq
2007-06-15 15:50
可以提高到Service中使用JTA来实现事务。

注意:你的调用DAO方式:Dao1 d1 = Spring.getBean("dao1");有误,业务层Service和DAO层是同在一个Spring容器中,不能以getBean这样容器外调用方式调用,直接使用IOC注射即可。

cscs31
2007-06-15 16:51
不好意思不太懂SPRING,如果我直接用getBean是会有Exception抛出吗?

IOC注射,主要是哪几句API?

gougou3250
2007-06-15 18:05
不需要代码,直接在SPRING的配置文件里配类之间的调用关系,可以用构造方法或者SET方法来实现注入,找书看一下,非常简单的

gougou3250
2007-06-15 18:07
用aop来做,当有update , insert , delete操作时,自动调用transaction

猜你喜欢
2Go 1 2 下一页