关于事务,困惑我好久了,求解答!
比如说,我有个DaoTemplate类,里面写好了对数据库的各种常见操作。
我现在有个需求是这样的,有两张表,一张教师表,一张学生表,假设关系是一对多的关系。要求删除某个教师的同时,要删除该教师下的学生。
用的MVC设计风格。使用业务逻辑层调用dao层。大致代码如下:
//业务逻辑层
public boolean deleteTeacher(Teacher teacher){
DaoTemplate dao=new DaoTemplate();
if(dao.delete(teacher.getStudent()){
if(dao.delete(teacher)){
return true;
}
//这里空的地方我有疑问,假设同学被删除了,而教师删除失败怎么办,比如刚好网络断开了。
}
return false;
}
代码我随意打的,大意就是先删除学生,然后判断删除成功的话就删除该教师。问题在这里:
假设同学被删除了,而教师删除失败怎么办?
因为调用的是dao里的方法,所以两次调用里用的connection是不同的。所以我不知道这种事务怎么处理,听说有个JTA事务可以解决不同数据库之间的s事务问题的。我用的是tomcat,貌似不支持的说。