我越来越困惑
先看看我的示例代码
方法1:
ADAO{
methodA(){
Connection con=ConnectionPool.getConnection();
//do some thing
methodB();
con.close();
}
methodB(){
Connection con=ConnectionPool.getConnection();
//do some thing
con.close();
}
}
方法2:
ADAO{
methodA(){
Connection con=ConnectionPool.getConnection();
//do methodA thing
//do metnodB thing
con.close();
}
methodB(){
Connection con=ConnectionPool.getConnection();
//do some thing
con.close();
}
}
方法3:
ADAO{
methodA(){
Connection con=ConnectionPool.getConnection();
//do methodA thing
methodB2(con);
con.close();
}
methodB(){
Connection con=ConnectionPool.getConnection();
methodB(con);
con.close();
}
methodB(Connection con){
//do methodB thing
}
}
就拿上面的代码来说,methodA和methodB()都可以被外界单独调用,在方法1中我们要完成methodA(),要创建两个Connection,且不说资源消耗,最大的问题是methodA和methodB不在一个Connection中而不好做事务化.
方法2虽然可以解决methodA和methodB的事务问题,但却在methodA中重复了一遍methodB的代码,个人感觉不好.
方法3虽然野可以解决事务问题而且可以重用代码,但是问题就是要多定义一个方法,如果所有的方法分开两个方法实现,DAO中的方法就加倍了,也觉得不好.
请问那种方法比较好呢,或者有更好的解决?