Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF/EJB中的数据库通信(理论上)_Jsf_Jpa_Jdbc_Ejb - Fatal编程技术网

JSF/EJB中的数据库通信(理论上)

JSF/EJB中的数据库通信(理论上),jsf,jpa,jdbc,ejb,Jsf,Jpa,Jdbc,Ejb,我目前正在写毕业论文,我被困在数据库通信的话题上。我的问题不是实现,而是JSF背后的架构。我读了很多关于它的书,但并不真正了解它 我的所有数据库访问都包含在EJB项目中,并由JDBC处理。JPA在DB实体和对象之间进行映射。那么JDBC就是连接到数据库的驱动程序吗 提前谢谢 项目架构必须按照“低耦合、高内聚”的原则进行良好组织 系统各层应充分分开。基本架构有3层 表示层:JSF托管bean位于该层。该层的任务是协调用户操作、保存用户数据并向用户显示数据。基本上,无论您使用哪种实现(JSF、Spr

我目前正在写毕业论文,我被困在数据库通信的话题上。我的问题不是实现,而是
JSF
背后的架构。我读了很多关于它的书,但并不真正了解它

我的所有数据库访问都包含在
EJB
项目中,并由JDBC处理。JPA在DB实体和对象之间进行映射。那么
JDBC
就是连接到数据库的驱动程序吗


提前谢谢

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

系统各层应充分分开。基本架构有3层

  • 表示层:JSF托管bean位于该层。该层的任务是协调用户操作、保存用户数据并向用户显示数据。基本上,无论您使用哪种实现(JSF、SpringMVC或Struts),它的职责都受到MVC模式的限制
  • 总线逻辑层:从页面收集的数据和操作被发送到该层以对数据进行操作。您不应该在表示层中操纵数据并准备响应。这是业务逻辑层的责任。(Spring,CDI)
  • 集成层:无论使用何种库技术(Hibernate、JPA、JDBC),都应该在该层中进行数据库访问
  • 如图所示。您的JSF托管bean应该只能处理来自页面(控制器)和页面数据(模型)的请求。您可以查看一下以了解JSF MVC。因此,最好不要在JSF托管bean中连接DB。这不是一个好的做法

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


    您可以下载基本上实现此体系结构的工具。

    JSF与数据库管理没有任何连接,尽管后者通常在JSF应用程序中使用

    尽管所有的工作都可以用“普通JDBC”来完成,但使用Java持久性API或JPA更合适。在后一种情况下,JPA提供者在封面下使用“普通JDBC”


    用以下方式思考这种关系:(原始)JDBC对JPA就像(原始)Servlet对JSF一样。

    好吧,我想我明白了:)非常感谢!不客气!虽然这有点离题,但如果你需要进一步澄清,你可以发布一些额外的问题。虽然你的答案肯定包含了对问题的良好概述,但它在条款上并不完全直截了当。此外,你不时地混合一些奇怪的东西。我认为如果你能解决这些问题,你的答案会受益匪浅。这些问题是什么。JSF托管bean不能绑定到表示层。2.CDI是JavaEE6的一部分,Spring(核心)是部分符合CDI规范的DI框架。此外,CDIBean可以用作控制器,也就是说,根据您的概述,CDIBean可以位于表示层中。3.JPA是一个API,而Hibernate是JPA实现之一。JPA和JDBC不是库,而是API。最后一段之前的那一段把一切都弄混了。最后,一些web应用程序可以在托管bean中使用JDBC代码。JSF并没有绑定到表示层,正如我所说,不这样做“这不是一个好的实践”。2.我提到过,您可以使用不同的MVC实现,比如struts或spring,细节问题不在讨论之列“正如CDI和Spring的详细信息一样。3.我提到Hibernate、JPA和其他技术。我没有给出细节,因为这超出了问题的主题。最后,在托管bean中使用JDBC代码不是一个好的实践。你可以随意使用任何你想使用的地方。再说一遍,我认为你的回答是一个很好的概述,但为了OP的理解,我提到了一些不准确的地方,因为我看到了它们。