哪一个范围应该是DAO通常具有
问题描述:
它不存在任何状态的问题。然而,为了最简单的访问类,使用原型(每次都是新的)还是singleton更好?哪一个范围应该是DAO通常具有
简单的对象创建对于dao来说是很便宜的..它通常只包含一个sessionfactory, 从单例列表访问对象可能同样很昂贵。
clarfication:这个问题的焦点是,如果有一个共同的约定daos的范围。
答
如果你的问题是关于架构,我会用作用域的DAO到单位工作或交易你正在做去。这减少潜在的交叉污染和线程问题。
如果你的问题是关于性能,那么答案就在于一个探查,它给你准确号码,您的特定工作量内。
答
我得出的结论是,没有“完美”的方式来决定这一点。单例作用域很可能是在Web应用程序中执行它的错误方式,因为您将有不同的会话 - 每个请求一个。所以在webapp - 请求范围中可能是正确的答案,但前提是您仅在请求中使用它,而不在后台任务中使用。原型范围是可行的 - 但只有当你没有在那里保存复杂的数据时。