dao作为servlet的成员 - 正常吗?

时间:2010-05-13 07:38:10

标签: java multithreading servlets singleton dao

我猜,DAO是线程安全的,不使用任何类成员。

那么它可以作为Servlet的私有字段使用而没有任何问题吗?我们只需要一份副本,

多个线程可以同时访问它,所以为什么还要创建一个局部变量,对吗?

1 个答案:

答案 0 :(得分:1)

“DAO”只是数据库抽象类的通用术语。它们是否是线程安全取决于具体实现。

这个糟糕的例子可以被称为DAO,但如果多个线程同时调用insert方法,它会让你遇到麻烦。

class MyDAO {
     private Connection connection = null;

     public boolean insertSomething(Something o) throws Exception {
          try {
              connection = getConnection()
              //do insert on connection.
          } finally {
              if (connection != null) {
                  connection.close();
              }
          }
     }
}

所以答案是:如果您的DAO正确处理连接和事务,它应该可以工作。