gpt4 book ai didi

java - 将 JSF 与 JPA 集成

转载 作者:行者123 更新时间:2023-11-30 07:29:09 26 4
gpt4 key购买 nike

我对 JSF 和 JPA 做了一些研究。阅读一些教程并遵循一些示例。在此之前,我会创建托管 Bean、模型和服务来处理我的应用程序。

在此模式中包含 JPA 的最佳实践是什么?我应该在同一个服务类中包含 JPQL 查询和数据库调用吗?在某些示例中,我看到 JPA 在与 Invoke 应用程序阶段调用的方法相同的托管 bean 中实现,或者我看到 JPA 在其他托管 bean 中实现?使用这两者的常见做法是什么?

最佳答案

您应该将您的 JPA 访问整合到 DAO 或一种或另一种服务层中,如果没有其他原因,您可以 stub 该 DAO 层以进行单元测试。然后,您所有的 JSF 托管 bean 都将通过该类路由它们的 JPA 访问。这样,无论何时从 JSF 托管 bean 访问 JPA,都可以模拟单个 DAO 方法调用,而不是分别模拟 EntityManagerQuery 等。

现在,更难的问题是:DAO/服务层应该是另一个 JSF 托管 bean、EJB 还是其他东西?在某种意义上,这比确认您想要分离 JPA 访问更重要。

就个人而言,我开始将 DAO 制作成另一种 JSF 托管 bean,使用 @ManagedProperty 进行注入(inject)。然后我在 Java EE 6 中发现了 CDI,并用 @Named/@Inject 代替它们制作了 POJO。

但是,如果您正在执行写入而不仅仅是读取,您应该考虑拥有一个单独的服务层,您可以在该服务层上声明事务 - 如果您正在使用,@Stateless EJB 可能最有意义JSF.

希望这对您有所帮助!

关于java - 将 JSF 与 JPA 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718236/

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