JdbcUtils
问题情境事务的处理
Dao层:不应涉及业务,只对数据库进行访问
Service层:处理逻辑业务(不应该出现数据库相关东西比如Connection)
Dao层处理事务
public void xxx(){
Connection con = null;
try{
con = JdbcUtils.getConnection();
con.setAutoCommitted(false);
QueryRunner qr = new QueryRunner();
String sql = "";
Object[]params=...;
qr.update(con,sql,params);
String sql = "";
Object[]params=...;
qr.update(con,sql,params);
con.commit();
}catch(Exception e){
try{
con.close();
}catch(Exception e){
con.rollback();
}
}
}
Service层处理事务
public class xxxService(){
private xxxDao dao = new xxxDao();
public void serviceMethod(){
Connection con = null;
try{
con = JdbcUtils.getConnection();
con.setAutoCommit("false");
dao.daoMethod1(...);
dao.daoMethod2(...);
con.commit();
}catch(Exception e){
try{
con.close();
}catch(Exception e){
con.rollback();
}
}
}
}
理想代码结构如下
public class xxxService(){
private xxxDao dao = new xxxDao();
public void serviceMethod(){
try{
JdbcUtils.beginTransaction();
d