【发布时间】:2011-10-19 08:00:06
【问题描述】:
我正在尝试使用 JSF 2、Spring 和 Hibernate 创建一个 Java EE Web 应用程序。我对这个堆栈相当陌生,所以我需要一些关于组织应用程序的最佳实践的帮助。
我最初的目标很简单,一个用户登录,并且她的会话在她注销之前不会关闭。到目前为止,这是我想出的:
用户实体类,用@Entity注解,以便持久化。未注册为 JSF 或托管 bean。带有私有字段(姓名、姓氏等)和访问器的简单 POJO。
DAO 与 User 类交互的接口:getUserById()、saveUser() 等。
DAO 的实现。用 Spring 的 @Repository 和 Hibernate 的 SessionFactory @Autowired 标记,并通过组件扫描添加到 ApplicationContext 中。
现在,对于浏览网站的用户,我认为我不应该从我的 User 类创建会话范围的 bean,对吗?我认为最好的做法是永远不要直接接触 User 类,只能通过 DAO。
那么,我是否需要另一个 bean UserManaged(可能是 ManagedBean 和会话范围)来复制 User 类的字段?并在我的 JSF 文件中使用它?那么,用户与网站交互时创建的 bean 用户应该由 JSF 处理,其余由 Spring 处理?但是这种重复不会破坏 DRY 原则,在另一个 UserManaged 类中拥有与 User 相同的字段吗?
【问题讨论】:
-
或者换句话说,JSF bean 是否仅用于站点的 UI?还有非 UI bean,用于通过 Spring 处理的持久性?
标签: hibernate spring jakarta-ee