简单DAO与servlet调用如何避免重复的数据库连接



简单DAO与servlet调用如何避免重复的数据库连接.现在都说框架,我今天发个不说框架的,作为入门讨论(包括我及其他初学者需要)。
写DAO往往是这样的(网上的视频教程,纸类教材,网上教程等貌似都是这样教的…):

Java代码 复制代码 收藏代码
  1. class DAO类名 {
  2.   //增加操作
  3.   public void add (vo对象) {
  4.     //1、获取一个数据库连接
  5.     //2、执行insert sql语句
  6.     //3、关闭数据库连接及其他清理操作
  7.   }
  8.   //删除操作
  9.   public void delete (vo对象) {
  10.     //1、获取一个数据库连接
  11.     //2、执行delete sql语句
  12.     //3、关闭数据库连接及其他清理操作
  13.   }
  14.   … …//其他类似操作
  15. }
class DAO类名 {

  //增加操作
  public void add (vo对象) {

    //1、获取一个数据库连接
    //2、执行insert sql语句
    //3、关闭数据库连接及其他清理操作
  }

  //删除操作
  public void delete (vo对象) {

    //1、获取一个数据库连接
    //2、执行delete sql语句
    //3、关闭数据库连接及其他清理操作
  }

  ... ...//其他类似操作

}

那么问题就来了,如果我在一个servlet中的doGet 或 doPost 中同时调用了 DAO.add() 和 DAO.delete() 这两个方法,那么每个方法都会打开并关闭数据库连接一次,显然是影响性能的。
如何在打开一次数据库连接中完成两次操作呢?
我想到的处理方法就类似与Hibernate session里的操作,使用transaction.begin()开始,transaction.commit()结束;
那么DAO类修改如下:

Java代码 复制代码 收藏代码
  1. class DAO类名 {
  2.   //增加新的方法begin();
  3.   public void begin() {
  4.   // 获取一个数据库连接
  5.    ……
  6.   }
  7.   //增加新的方法commit();
  8.   public void begin() {
  9.   // 关闭数据库连接及其他清理
  10.    ……
  11.   }
  12.   //增加操作
  13.   public void add (vo对象) {
  14.     //执行insert sql语句
  15.   }
  16.   //删除操作
  17.   public void delete (vo对象) {
  18.     //2、执行delete sql语句
  19.   }
  20.   … …//其他类似操作
  21. }
class DAO类名 {

  //增加新的方法begin();
  public void begin() {

  // 获取一个数据库连接
   ......

  }

  //增加新的方法commit();
  public void begin() {

  // 关闭数据库连接及其他清理
   ......

  }

  //增加操作
  public void add (vo对象) {   

    //执行insert sql语句
  }

  //删除操作
  public void delete (vo对象) {

    //2、执行delete sql语句
  }

  ... ...//其他类似操作

}

DAO这样写以后,servlet中调用就写为:

Java代码 复制代码 收藏代码
  1. DAO dao = new DAO() ;
  2. dao.begin();
  3. dao.add(vo);
  4. dao.delete(vo);
  5. dao.commit();
...

DAO dao = new DAO() ;

dao.begin();

dao.add(vo);
dao.delete(vo);

dao.commit();

...

这里说的简单的例子,复杂的也该是以此为基础。不知道大家在实际使用中是如何处理的?欢迎大家指点。
被误了N久啊。要是这样去找工作,谁敢要?! 问题补充: 貌似偶要发讨论意向,居然就成问题贴了,动不动就框架,没框架怎么办?偶也没进过什么公司,没团体合作过,完全自学,哪来那么好的处理方法?苦啊,继续摸索。
什么时候会发生一次连接,多次操作呢?比如:分页时,即要获取当前页的数据,又要获取总数。

http://www.iteye.com/problems/8358