毫无疑问,dao不会持有任何州。
但是,为了最容易访问该类,使用原型(每次都是新的)还是单例更好?
简单的对象创建对dao来说很便宜..它通常只包含sessionfactory, 从单身人士列表中访问对象可能同样昂贵。
澄清:这个问题的焦点是,如果对daos的范围有一个共同的约定。答案 0 :(得分:3)
如果你的问题是关于架构,我会选择将DAO作为工作单元或您正在进行的交易。 降低 跨交易污染和线程问题的可能性。
如果您的问题是关于效果,那么答案就在分析器中,这为您的特定提供准确数字工作量强>
答案 1 :(得分:2)
或者将原型与池结合使用,如下所述:
或者在这里:
编辑:显然,我认为这里使用的是弹簧。否则我道歉答案 2 :(得分:0)
我得出的结论是,没有“完美”的方法来决定这一点。单例范围很可能是在Web应用程序中执行此操作的错误方式,因为您将有不同的会话 - 每个请求一个。所以在webapp中 - 请求范围可能是正确的答案,但前提是您只在请求中而不是在后台任务中使用它。原型范围是可行的 - 但前提是你没有在那里保存复杂的数据。