使用Hibernate / JPA的Java Server Faces中的数据持久性

我打算用Java Server Faces构建一个Web应用程序,但我不确定如何处理我的实体的持久性。 对于php项目,我在Doctrine 2中使用Symfony框架。我主要在控制器中调用实体管理器的持久化方法。 所以没有业务逻辑的单独类。 我试过Hibernate,我认为这是一个很好的替代原则。 ;)

java项目适用于大学,我想将业务逻辑从控制器/ bean转移到业务逻辑类。

我阅读了关于数据访问对象和存储库模式的文章和教程(http://docs.spring.io/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/jpa.repositories.html)。

在数据访问对象模式中,我有一个用于我的实体的类和一个接口以及一个用于DAO对象/实体的类,在存储库模式中,我有一个用于实体的类和一个用于repisitory的类。

但我的业务逻辑在哪里? 我是否必须为业务逻辑层编写一个接口和一个类,并在类内部简单地调用我的dao / repository方法? 如果是这样,两种模式有什么区别?

如果我完全错误:Java Server Faces中数据持久性(使用Hibernate / JPA)的(行业)标准是什么?


项目的架构必须按照“低耦合,高内聚”的原则进行组织,

系统层应该很好地分离。 基础架构有3层。

  • 表现层:JSF托管的bean在这一层。 该层的任务是对应用户操作,保存用户数据并向用户显示数据。 基本上,无论您使用哪种实现(JSF,Spring MVC或Struts),其职责都受MVC模式限制。
  • Bussimess逻辑层:从页面收集的数据和操作被发送到该层以操作数据。 您不应该操纵数据并在Presentation Tier中准备响应。 这是Bussiness Logic Tier的职责(Spring,CDI)
  • 集成层:无论使用何种库技术(Hibernate,JPA,JDBC),都应在此层完成数据库访问。
  • 在这里输入图像描述

    正如你可以在照片中看到的。 您的JSF托管的bean应该只能够处理来自页面(控制器)和页面数据(模型)的请求。 你可以看看这个答案来理解JSF MVC。 因此,最好不要在JSF托管的bean内部连接数据库。 这不是一个好习惯。

    你问题的第二部分。 所有的技术,Hibernate,JPA,Spring JDBC,都使用相关数据库的JDBC驱动程序。 JDBC驱动程序是连接到数据库的正确事物。 但是,选择一种如何连接到DB,Hibernate,JPA或Spring JDBC的方法是很麻烦的。

    您可以下载基本上实现此架构的示例应用程序。

    链接地址: http://www.djcxy.com/p/61423.html

    上一篇: Data persistence in Java Server Faces with Hibernate/JPA

    下一篇: Can I get something like an entity bean in EJB 3.2?