繁体   English   中英

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

[英]Data persistence in Java Server Faces with Hibernate/JPA

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

Java项目是针对大学的,我想将业务逻辑从控制器/ bean转移到业务逻辑的类。

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

在数据访问对象模式中,我为我的实体有一个类,为我的DAO对象/实体有一个接口,为我的DAO对象/实体类,在存储库模式中,我有一个为我的实体的类和一个代表类。

但是我的业务逻辑在哪里? 我是否需要为业务逻辑层的每个实体编写一个接口和一个类,并且在这些类内部(我只是简单地调用dao / repository方法)? 如果是这样,两种模式之间有什么区别?

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

该项目的架构必须按照“低耦合和高凝聚力”原则进行良好的组织

系统层应该很好地分开。 基本架构分为3层。

  1. 表示层:JSF托管的bean在这一层中。 该层的任务是对应用户动作,保存用户数据并将数据显示给用户。 基本上,无论您使用哪种实现(JSF,Spring MVC或Struts),它的职责都受MVC模式的限制。
  2. Bussimess逻辑层:从页面收集的数据和操作已发送到该层以对数据进行操作。 您不应操纵数据并在Presentation Tier中准备响应。 这是业务逻辑层的职责。(Spring,CDI)
  3. 集成层:无论使用哪种库技术(Hibernate,JPA,JDBC),都应在此层中进行数据库访问。

在此处输入图片说明

如您在图片中所见。 您的JSF托管Bean应该只能从页面(控制器)和页面数据(模型)发出请求。 您可以查看此答案以了解JSF MVC。 因此,最好不要在JSF受管bean中连接数据库。 这不是一个好习惯。

问题的第二部分。 Hibernate,JPA,Spring JDBC等所有技术都使用相关数据库的JDBC驱动程序。 JDBC驱动程序是连接到数据库的唯一工具。 但是,最好选择一种方法连接到DB,Hibernate,JPA或Spring JDBC。

您可以下载我的示例应用程序 ,该示例应用程序基本上实现了该体系结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM