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

马塞洛90

我打算用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。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hibernate中的注释是Hibernate还是Java持久性API?

来自分类Dev

使用Java持久性查询语言在表中插入和更新数据

来自分类Dev

使用Java持久性API进行Spring Hibernate集成?

来自分类Dev

JPA + Hibernate = EntityManager没有持久性提供程序

来自分类Dev

JavaFX + Hibernate(JPA)持久性+ Derby DB

来自分类Dev

使用FXRegistry在FXRuby中存储持久性数据

来自分类Dev

使用JPA 2.1的persistence.xml文件中的多个持久性单元

来自分类Dev

持久性Java数据库

来自分类Dev

使用Servlet与持久性Java应用程序对话

来自分类Dev

未选择数据库JPA持久性

来自分类Dev

外部库数据模型的JPA持久性

来自分类Dev

外部库数据模型的JPA持久性

来自分类Dev

JPA继承持久性

来自分类Dev

JPA持久性更新

来自分类Dev

持久性与Hibernate / JPA,其中对象的身份是非常重要的

来自分类Dev

Spring WebFlow:持久性上下文不适用于Spring Data JPA / Hibernate

来自分类Dev

使 SQL Server 成为 Thingworx 中的持久性提供程序

来自分类Dev

Java JPA / Hibernate和SQL Server-如何检测实体模型未映射db中的列?

来自分类Dev

通过JAVA API启动流程实例时Camunda中的数据持久性

来自分类Dev

尝试使用Java(JMS)中的选择器在Tibco EMS上消耗持久性消息时遇到麻烦

来自分类Dev

如何在Spring Data JPA中使用多个JPA持久性上下文?

来自分类Dev

带有 JAVA 持久性 API ( JPA) 的 MongoDB

来自分类Dev

如何使用MySQL配置Spring Cloud Zipkin Server以获得持久性?

来自分类Dev

使用ServiceStack OrmLite和SQL Server持久性进行Redis缓存

来自分类Dev

使用会话和cookie来存储持久性数据

来自分类Dev

《 Java持久性与Hibernate,第二版》一书中的用例

来自分类Dev

使用Spring时如何注入多个JPA EntityManager(持久性单元)

来自分类Dev

如何使用Spring Data JPA + Neo4j正确设置跨存储持久性?

来自分类Dev

我可以在没有外部持久性提供程序的情况下使用JPA吗?

Related 相关文章

  1. 1

    Hibernate中的注释是Hibernate还是Java持久性API?

  2. 2

    使用Java持久性查询语言在表中插入和更新数据

  3. 3

    使用Java持久性API进行Spring Hibernate集成?

  4. 4

    JPA + Hibernate = EntityManager没有持久性提供程序

  5. 5

    JavaFX + Hibernate(JPA)持久性+ Derby DB

  6. 6

    使用FXRegistry在FXRuby中存储持久性数据

  7. 7

    使用JPA 2.1的persistence.xml文件中的多个持久性单元

  8. 8

    持久性Java数据库

  9. 9

    使用Servlet与持久性Java应用程序对话

  10. 10

    未选择数据库JPA持久性

  11. 11

    外部库数据模型的JPA持久性

  12. 12

    外部库数据模型的JPA持久性

  13. 13

    JPA继承持久性

  14. 14

    JPA持久性更新

  15. 15

    持久性与Hibernate / JPA,其中对象的身份是非常重要的

  16. 16

    Spring WebFlow:持久性上下文不适用于Spring Data JPA / Hibernate

  17. 17

    使 SQL Server 成为 Thingworx 中的持久性提供程序

  18. 18

    Java JPA / Hibernate和SQL Server-如何检测实体模型未映射db中的列?

  19. 19

    通过JAVA API启动流程实例时Camunda中的数据持久性

  20. 20

    尝试使用Java(JMS)中的选择器在Tibco EMS上消耗持久性消息时遇到麻烦

  21. 21

    如何在Spring Data JPA中使用多个JPA持久性上下文?

  22. 22

    带有 JAVA 持久性 API ( JPA) 的 MongoDB

  23. 23

    如何使用MySQL配置Spring Cloud Zipkin Server以获得持久性?

  24. 24

    使用ServiceStack OrmLite和SQL Server持久性进行Redis缓存

  25. 25

    使用会话和cookie来存储持久性数据

  26. 26

    《 Java持久性与Hibernate,第二版》一书中的用例

  27. 27

    使用Spring时如何注入多个JPA EntityManager(持久性单元)

  28. 28

    如何使用Spring Data JPA + Neo4j正确设置跨存储持久性?

  29. 29

    我可以在没有外部持久性提供程序的情况下使用JPA吗?

热门标签

归档