当前位置: 首页 > 知识库问答 >
问题:

JPA或JDBC,它们有什么不同?

尉迟德惠
2023-03-14

我正在学习Java EE和我下载的eclipse与glassfish相同。我看到了一些例子,也阅读了Oracle文档,以了解所有关于Java EE5的信息。连接到数据库非常简单。我打开了一个动态web项目,创建了一个会话EJB,我使用了EntityManager,并使用get方法可以访问存储的数据表。

对于下一个项目,我创建了一个简单类,然后访问一些DB表。我遇到的第一个问题是PersistenceUnit属性只能被EJB、Servlet等识别,而不是一个简单的Java类识别。所以我不能使用EntityManager方式(或者我可以吗?)

我被要求通过“jdbc”的方式。我遇到的第一个问题是连接到DB。看来这一切都是硬编码的。我有一个persistence.xml,可以使用它轻松地配置数据库连接。甚至为DB设置驱动程序也很容易。此外,JDBC中没有用于访问表实体的get/set方法。

我如何理解JPA和持久性与JDBC的关系?JPA的目的是什么?为什么会有set/get方法?有没有人可以在没有“行话”的情况下,对这两者的本质和利弊有什么启示??也请建议一些链接。一个简单的谷歌搜索JPA和JDBC的区别,让我找到了一些我无法理解的“术语”站点:(

共有1个答案

陆博易
2023-03-14

通俗地说:

  • JDBC是数据库访问的标准
  • JPA是ORM的标准

JDBC是直接连接到DB并对其运行SQL的标准-例如select*FROM users等。可以返回数据集,您可以在应用程序中处理这些数据集,并且您可以执行所有常见的操作,如insertdelete、运行存储过程等。它是大多数Java数据库访问(包括JPA提供程序)背后的底层技术之一。

传统的JDBC应用程序的一个问题是,您经常会有一些蹩脚的代码,其中数据集和对象之间存在大量映射,逻辑与SQL混合在一起,等等。

JPA是对象关系映射的标准。这是一种允许您在代码和数据库表中的对象之间进行映射的技术。这可以对开发人员“隐藏”SQL以便他们处理的都是Java·类,提供者允许您保存它们并神奇地加载它们。大多数情况下,可以使用getter和setter上的XML映射文件或注释来告诉JPA提供程序您的对象上的哪些字段映射到DB中的哪些字段。最著名的JPA提供程序是Hibernate,因此它是一个很好的地方来开始具体的示例。

其他示例包括OpenJPA、toplink等。

实际上,Hibernate和JPA的大多数其他提供程序编写SQL并使用JDBC从DB读写DB。

 类似资料:
  • 问题内容: 我正在学习Java EE,并且下载了带有glassfish的日食。我看到了一些示例,还阅读了Oracle文档,以全面了解Java EE5。连接到数据库非常简单。我打开了一个动态Web项目,创建了一个会话EJB,我使用EntityManager并通过get方法可以访问存储的数据表。 对于我的下一个项目,我创建了一个简单的类,然后访问一些数据库表。我遇到的第一个问题是Persistence

  • 虽然不是新手,但我正在尝试学习spring框架(又一次!)为了确定我真的明白这一点。我对核心Spring(DI)有相当的想法。现在,我将重点放在数据层上。 这些术语相同吗?即“Spring+Hibernate”是否与“Spring Data JPA”相同。如果不是,那么区别/相似点是什么? 我真的对这么多看似相似,但可能不同的术语/陈述(如上)感到困惑。

  • 问题内容: 在“ Python编程 ”中,提到了。我来自背景,以前没有听说过这个词。什么是? 在本示例的两行之间进行阅读(我已经链接了它,因为它很长),我认为这是使用多重继承来扩展类而不是“适当的”子类的一种情况。这是正确的吗? 为什么我要这样做而不是将新功能放入子类中?因此,为什么混合/多重继承方法比使用组合更好? 什么将mixin与多重继承分开?这仅仅是语义问题吗? 问题答案: 是一种特殊的多

  • 问题内容: 今天,我浏览了该站点上的一些问题,发现提到了 以单例模式使用的这种解决方案声称具有线程安全性的优点。 我从未使用过,并且使用Java编程已经有两年多了。显然,他们改变了很多。现在,他们甚至在自己内部提供了对OOP的全面支持。 现在为什么要在日常编程中使用枚举?为什么? 问题答案: 当变量(尤其是方法参数)只能从一小部分可能的值中取出一个时,应始终使用枚举。例如类型常量(合同状态:“永久

  • 使用PEP 557,将数据类引入python标准库。 它们使用了装饰器,它们应该是“带默认值的可变名称耦合”,但我不太清楚这到底意味着什么,以及它们与普通类的区别。 python数据类到底是什么?什么时候最好使用它们?

  • 我刚刚开始使用MongoDB,我注意到它使用BSON在内部存储数据。然而,关于什么是BSON以及如何在MongoDB中使用BSON,文档并不十分清楚。有人能给我解释一下吗?