5

我想知道多线程应用程序中是否有经过批准的做法。我应该每个线程有一个 DAO 还是简单地将一个 DAO 设为线程安全的单例。

4

2 回答 2

4

这在很大程度上取决于您用于数据访问的机制。如果您有一个非常可扩展的数据访问,并且有很多线程,那么使用某种形式的线程静态数据访问可能是有利的。

如果您没有可扩展的数据访问,您的提供程序不支持每个进程的多个线程,或者您此时不需要可扩展性,则使用具有适当同步的单例更简单且更容易实现。

对于大多数商业风格的应用程序,我个人认为单例方法更容易维护,而且可能更好——如果没有其他原因的话,它更容易有效地测试。可能不需要多个线程进行数据访问,因为数据访问可能不会成为影响可用性的瓶颈(如果您设计正确,并且适​​当地批量请求)。

于 2010-01-04T18:04:50.690 回答
0

使用最适合您的应用程序架构的方法,除非:

1)您的数据访问对象的创建成本很高,在这种情况下,您应该倾向于线程安全的单例。

2) 你的对象保持可变状态,就像在Active Record 模式中一样。(不可变的 DAO 配置状态,如超时阈值,不算在内。)

于 2010-01-04T18:18:55.500 回答