1

道不会拥有任何状态,这是毫无疑问的。

但是,为了最容易地访问该类,使用原型(=每次都新建)还是单例更好?

简单的对象创建对于 dao 来说很便宜。它通常只拥有一个 sessionfactory,从单例列表中访问对象可能同样昂贵。

澄清:这个问题的重点是,如果对 daos 的范围界定有一个共同的约定。

4

3 回答 3

3

如果您的问题是关于架构的,我会将 DAO 范围限定为您正在执行的工作单元或事务。减少交叉事务污染线程问题的可能性。

如果您的问题是关于性能的,那么答案就在分析器中,它可以为您的特定工作负载提供准确的数字。

于 2008-10-14T12:54:23.973 回答
2

或者将原型与池结合使用,如下所述:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop-api.html#aop-ts-pool

或者在这里:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/classic-aop-spring.html#classic-aop-ts-pool

编辑:显然,我假设这里使用了弹簧。否则我道歉

于 2010-05-18T10:09:00.550 回答
0

我得出的结论是,没有“完美”的方式来决定这一点。单例范围很可能是在 Web 应用程序中执行此操作的错误方式,因为您将有不同的会话 - 每个请求一个。所以在 webapp 中 - 请求范围可能是正确的答案,但前提是您仅在请求中而不是在后台任务中使用它。原型范围是可行的——但前提是你没有在那里保存复杂的数据。

于 2008-12-10T16:02:40.323 回答