这是一个普遍问题,并不是特定于我当前的应用程序。Java:我们可以使用DAO作为单例实例吗?
在交通繁忙多线程应用程序中,有什么办法可以做到:假设有一个DAO包含一个方法updateData
来更新数据库中的一些数据。
问题:
- 这是一个好的方法有DAO类的Singleton实例并访问它的方法
updateData
? - 或者我应该每次创建该DAO的新对象并调用方法
updateData
?
这是一个普遍问题,并不是特定于我当前的应用程序。Java:我们可以使用DAO作为单例实例吗?
在交通繁忙多线程应用程序中,有什么办法可以做到:假设有一个DAO包含一个方法updateData
来更新数据库中的一些数据。
问题:
updateData
?updateData
?是的,这是绝对是一个好主意,以创建这种服务单,确保它不具有任何状态相关的问题时,被多个线程访问
我会标明这种DAO如春豆
你可以有一个DAO的单例实例,你只需要确保DAO是无状态的,但DAO应该是无状态的。
最好创建一个DAO实例并将其传递给需要它的类的构造方法。我倾向于避免单身人士,因为除其他外,他们使您的代码难以测试并隐藏依赖关系。
看看关于这个问题的答案:What is so bad about Singletons?
非常感谢,在我们的情况下,我们的DAO类已得到状态(实例变量),所以我想他们正在创造一个新对象DAO的每一次。 – Pawan
取决于,如果该实例可以与多个线程共享,那么不需要那个(用于快速示例记录器),如果该成员变量与DAO状态有关(通常不是这种情况),那么您应该使用2 –
一个DAO可以有成员变量,但这并不意味着他们有一个“状态”。只要确保这些变量的值在DAO方法的调用之间不发生变化,并且调用具有相同输入参数的两次单个方法返回相同的值。 –