首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java 事务处理,该怎么解决

2012-02-22 
java 事务处理如何将两个类里面的sql整合到一个事务里面?如:UserAction ---- UserService(这个里面有个sq

java 事务处理
如何将两个类里面的sql整合到一个事务里面?如:
UserAction ----> UserService(这个里面有个sql操作)
TeacherAction----> TeacherService(这个里面有个sql操作)
具体的流程为

UserAction ----> UserService---->UserAction ---->TeacherAction----> TeacherService---->TeacherAction----->JSP
请问下我如何将上面两个service里面的sql操作归属到一个事务里面。即UserService操作成功TeacherService必须操作成功反之就不能成功

[解决办法]
前提是操作的一个数据库:
分三层(Dao,Service,Action) 
Dao 操作数据库
Servcic 封装业务逻辑

[解决办法]
UserAction ----> UserService(调用TeacherService方法)---->UserAction ----->JSP
比如:
UserImpService{
private TeacherService teacherService;
public void test(){
xxxDao.xxx();
teacherService.xxx();
}

}
[解决办法]
既然2个service里面的sql是同一个事务的,那就应该写在一个service里面,作为一个服务,
把2个service里面的调dao的东西写一起,就可以用事务管理了
[解决办法]
菜鸟帮楼主顶一下,大致看懂了问题。
业务流程里面 2个service中的事务独立。

要是把2个事务放在一起,2个sql就要合并到一起,那业务流程 是不是 也要改变了?
[解决办法]
举个简单的例子,仅做参考:

public void test(){
String sql1 = "INSERT INTO CS_USERS(T_USERNAME,T_PASSWORD) VALUES ('USERNAME3','PASSWORD3')";
String sql2 = "INSERT INTO CS_USERS(T_USERNAME,T_PASSWORD) VALUES ('USERNAME4','PASSWORD4')";
try {
con.setAutoCommit(false); 
stat = con.createStatement();
//实现业务逻辑
stat.execute(sql1);
//实现业务逻辑
//int i = 1/0;
stat.execute(sql2);
//实现业务逻辑
//int i = 1/0;
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}

[解决办法]
用一个总service调用!!应该是这样
[解决办法]
看一下事务的传播。。。

http://yeyhan.blog.163.com/blog/static/441793332010216112439468/
[解决办法]
可以使用Spring,在配置文件里面配一个事务管理器,把 UserService, TeacherService
添加到事物里面 即可

热点排行