gpt4 book ai didi

hibernate - 如何在 Java EE Spring JSF 应用程序中组织支持 bean 和实体类

转载 作者:行者123 更新时间:2023-12-04 06:10:40 26 4
gpt4 key购买 nike

我正在尝试使用 JSF 2、Spring 和 Hibernate 创建一个 Java EE Web 应用程序。我对这个堆栈相当陌生,所以我需要一些关于组织应用程序最佳实践的帮助。

我最初的目标很简单,一个用户登录,并且她的 session 在她注销之前不会关闭。到目前为止,这是我想出的:

  • 用户实体类,使用 @Entity 注释,以便持久化。未注册为 JSF 或托管 bean。带有私有(private)字段(姓名、姓氏等)和访问器的简单 POJO。
  • DAO 与 User 类交互的接口(interface):getUserById()、saveUser() 等。
  • DAO 的实现。用 Spring 的 @Repository 和 Hibernate 的 SessionFactory @Autowired 标记,并通过组件扫描添加到 ApplicationContext 中。

  • 现在,对于浏览网站的用户,我相信我不应该从我的 User 类创建 session 范围的 bean,对吗?我认为最好的做法是永远不要直接接触 User 类,只能通过 DAO。

    那么,我是否需要另一个 bean UserManaged(可能是 ManagedBean 和 session 范围)来复制 User 类的字段?并在我的 JSF 文件中使用它?那么,用户与网站交互时创建的 bean 用户应该由 JSF 处理,其余由 Spring 处理?但是这种重复不会破坏 DRY 原则,在另一个 UserManaged 类中具有与 User 相同的字段吗?

    最佳答案

    我一直喜欢为 Hibernate/JPA 实体和 JSF bean 使用不同的对象,将不同的层解耦并为对象提供不同的上下文。它还避免了 ORM 的附加/分离问题,并让我有一个解耦的面向服务的架构。

    但是,如果我真的想用 JSF 和 Hibernate 做到这一点,我会避免在 bean 中添加注释:

  • 使用不带注解的 Hibernate,保留映射信息
    在映射 xml 文件中。
  • 将 JSF 2 与包含有关 JSF bean 的所有信息的 xml 文件一起使用。

  • 因此,我在类中既没有任何持久性信息,也没有任何 JSF 信息,我可以对两个层使用相同的对象。

    关于hibernate - 如何在 Java EE Spring JSF 应用程序中组织支持 bean 和实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818224/

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