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

标签 java multithreading servlets singleton dao

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

那么它可以毫无问题地用作 Servlet 的私有(private)字段吗?我们只需要一份副本,并且

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

最佳答案

“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 正确处理连接和事务,它应该可以工作。

关于java - dao 作为 servlet 的成员 - 正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825099/

相关文章:

java - 如何计算大于平均数的百分比?

Java 反射与枚举和接口(interface)

java - 如何从 Json 转换为 Protobuf?

c++ - 引用计数线程安全吗

java - 为什么synchronized不能同步线程?

java - 多线程 OptimisticLockException

java - 字典或类似的数据结构,只存储最近的 n 个条目?

java - 添加功能 - 使用 Ant 构建的 Java servlet

java - 使用 XML 的 Servlet

servlets - 向与数据库交互的 Servlet 提交表单会导致空白页面