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

发布于 2024-09-01 00:41:29 字数 117 浏览 3 评论 0原文

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

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

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

I guess, DAO is thread safe, does not use any class members.

So can it be used without any problem as a private field of a Servlet ? We need only one copy, and

multiple threads can access it simultaneously, so why bother creating a local variable, right?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梨涡 2024-09-08 00:41:29

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

"DAO" is just a general term for database abstraction classes. Whether they are threadsafe or not depends on the specific implementation.

This bad example could be called a DAO, but it would get you into trouble if multiple threads call the insert method at the same time.

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();
              }
          }
     }
}

So the answer is: if your DAO handles connections and transactions right, it should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文