一个事物多个数据库操作关闭的问题,怎样才能不影响连接数混乱

[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);     

}

处理原则是哪边开启连接的,就在那个方法里面关闭连接,如果放到调用方法里面处理连接的关闭将会把事情搞得很复杂,不好处理。