[code="java"][/code]
conn = JDBCUtil.generateConn();
conn.setAutoCommit(false);
logger.info("commit false");
RosDao.deleteZLIFNRRGT(jbxxbean.getNAME1(), conn);
RosDao.deleteZBP_PROD_CAT(jbxxbean.getNAME1(), conn);
RosDao.deleteZBP_PUR_CAT(jbxxbean.getNAME1(), conn);
一个事物涉及多个数据库操作,在每个被调的方法里都要关闭 conn 么,还是在主方法一起关
这三个方法用的是同一个conn,关闭了就没有事务的概念了,
[code="java"]
try{
conn = JDBCUtil.generateConn();
conn.setAutoCommit(false);
logger.info("commit false");
RosDao.deleteZLIFNRRGT(jbxxbean.getNAME1(), conn);
RosDao.deleteZBP_PROD_CAT(jbxxbean.getNAME1(), conn);
RosDao.deleteZBP_PUR_CAT(jbxxbean.getNAME1(), conn);
}catch(Exception e){
conn.rollback();
}finally{
//此处conn并未真正关闭,交给数据库连接池维护
//下面两句谁在前谁在后并不影响
JDBCUtil.close(conn);
conn.setAutoCommit(true);
}
[/code]
只需要在这里统一关闭就行了。
finally{
JDBCUtil.close(conn);
}
处理原则是哪边开启连接的,就在那个方法里面关闭连接,如果放到调用方法里面处理连接的关闭将会把事情搞得很复杂,不好处理。