gpt4 book ai didi

JavaEE6 DAO : Should it be @Stateless or @ApplicationScoped?

转载 作者:太空狗 更新时间:2023-10-29 22:34:54 27 4
gpt4 key购买 nike

我目前正在创建一个 EJB3 数据访问类来处理我的 Java EE 6 应用程序中的所有数据库操作。现在,由于 Java EE 6 提供了新的 ApplicationScoped 注释,我想知道我的 EJB 应该具有什么状态,或者它是否应该是无状态的。

让 DAO 成为 @Stateless session Bean 或 @ApplicationScoped Bean 会更好吗? @Singleton 怎么样?这些与 DAO 相关的选项之间有什么区别?

编辑:我在完整的 Java EE 6 平台上使用 Glassfish 3.0.1

最佳答案

Whould it be better to let the DAO be a @Stateless Session Bean, or an @ApplicationScoped Bean? What about @Singleton? What are the differences between these options related to a DAO?

我不会为 DAO 使用无状态 session Bean:

  1. EJB 由容器汇集,因此如果每个池有 N 个实例和数千个表,您只会浪费资源(更不用说部署时的成本了)。

  2. 将 DAO 实现为 SLSB 会鼓励 EJB 链接,从可扩展性的角度来看,这不是一个好的做法。

  3. 我不会将 DAO 层绑定(bind)到 EJB API。

EJB 3.1 中引入的 @Singleton 可以使事情变得更好一些,但我仍然不会将 DAO 实现为 EJB。我宁愿使用 CDI(也可能是自定义构造型,例如参见 this article)。

或者我根本不会使用 DAO。 JPA 的实体管理器是 Domain Store 的一个实现模式和包装对 DAO 中域存储的访问不会增加太多值(value)。

关于JavaEE6 DAO : Should it be @Stateless or @ApplicationScoped?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3223112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com