class - 在 Dao 类中使用静态方法还是非静态方法?

标签 class static dao

嗨,我为一些数据库操作生成了 Dao 类

以这种方式将 Dao 类的方法设为静态还是非静态更好?

使用下面的示例 dao 类,如果不止一个客户端必须同时使用 AddSampleItem 方法?这可能会导致什么结果?

public class SampleDao
{
  static DataAcessor dataAcessor 

  public static void AddSampleItem(object[] params)
  {
      dataAcessor =new DataAcessor();
       //generate query here
       string query="..."
      dataAcessor.ExecuteQery(query);
      dataAcessor.Close(); 
   }

  public static void UpdateSampleItem(object[] params)
  {
      dataAcessor =new DataAcessor();
       //generate query here
       string query="..."
      dataAcessor.ExecuteQery(query);
      dataAcessor.Close(); 
   }
}

最佳答案

这将导致大困惑。如果你同时从不同的线程添加 2 个项目,你肯定会得到非常奇怪的结果,如果一个线程关闭了 DataAcessor,甚至会出错。在另一个完成之前。

我会使用本地 DataAcessor或者创建一个新的并在所有方法中使用它,具体取决于您希望如何管理 DataAcessor 的生命周期.

public class SampleDao
{
  public void AddSampleItem(object[] params)
  {
      DataAcessor dataAcessor =new DataAcessor();
      // ...
  }

  public void UpdateSampleItem(object[] params)
  {
      DataAcessor dataAcessor =new DataAcessor();
      // ...
  }
}

关于class - 在 Dao 类中使用静态方法还是非静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2523804/

相关文章:

android - 在 dao room 数据库中创建一个带有 body 的自定义函数

sql-server - 作为 SQL Server 前端 Access - ADO 与 DAO?

c++ - 在主函数 c++ 中使用类时出现两个错误

class - 类中PHP调用类返回错误:500

c# - 静态类的静态方法与非静态类的静态方法 (C#)

java - 这是做我正在尝试的事情的正确方法吗?抽象静态变量?

java - 编辑/更新java spring

C++ 在多个项目中包含一个类

c++ - 创建类对象时出错

c# - 使用静态事件或通过单例订阅的事件订阅?