gpt4 book ai didi

jpa - 没有 EJB 的 Java EE DAO

转载 作者:行者123 更新时间:2023-12-04 19:48:33 24 4
gpt4 key购买 nike

是否可以在 Java EE 环境中创建一个 DAO,它使用 JPA,但不需要是无状态 bean?我问是因为我有大量的 EJB,只是因为我在 DAO 中需要一些 @Resources,即 EntityManager 等等。

作为在大型项目中简化 DAO 的一种方法,您会推荐什么方法,在我看来,为 DAO 拥有完整的 EJB(而不是简单的对象)似乎是一件容易的事。

DAO 既可以从其他 EJB 也可以从 servlet 访问。

最佳答案

可以但不推荐将 EntityManagerUserTransaction 一起注入(inject)其他类型的 bean(例如 CDI 托管 bean),然后手动管理您的事务.

在 Java EE 7 中,JTA 1.2 像 EJB 一样为声明式事务提供 CDI 兼容扩展,但目前还没有任何 Java EE 7 AS 的最终版本。

it seems to me that having a full EJB (instead of a simple object) for a DAO is excessive.

你为什么这么认为?一个“完整的”EJB 可能比任何其他替代方案都更轻量级,而且几乎可以肯定比您可以基于 EntityManager 想出的任何家常菜更轻量级。

不要忘记 EJB bean 会自动共享它们的资源,并且注入(inject)点只会获得代理。如果您主要使用无状态 EJB bean,那么这些代理类似于 URL,而不是“真正的”bean。这使得无状态和本地 EJB bean 的注入(inject)非常轻巧。

意思是,如果你有一个给定的服务,你在其中注入(inject)(比如说)10 个 DAO,每个都有一个注入(inject)的 EntityManager,并且在给定的调用期间调用了 3 个 DAO,那么实际上只使用了 3 个 bean并且只有 1 个 EntityManager 实例。确实比较有效率。

关于jpa - 没有 EJB 的 Java EE DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392736/

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