首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JPA或JDBC,它们有什么不同?

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

Stack Overflow用户
提问于 2012-08-09 18:38:20
回答 3查看 136.8K关注 0票数 146

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

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

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

我如何理解JPA和持久化与JDBC的关系?JPA是用来做什么的?为什么会有set/get方法?有人能解释一下这两种语言的本质吗?没有“行话”,它们的优缺点是什么?也请推荐一些链接。通过简单的google搜索JPA和JDBC的差异,我找到了一些我无法理解的充满“术语”的站点:

EN

回答 3

Stack Overflow用户

发布于 2012-08-09 18:46:06

JPA和JDBC之间的主要区别是抽象级别。

JDBC是与数据库交互的低级标准。JPA是用于相同目的的更高级别的标准。JPA允许您在应用程序中使用对象模型,这将使您的工作更加轻松。JDBC允许您直接使用数据库做更多的事情,但它需要更多的关注。有些任务不能使用JPA有效地解决,但可以使用JDBC更有效地解决。

票数 68
EN

Stack Overflow用户

发布于 2012-08-09 18:52:56

JDBC是一种比JPA更低级(也更老)的规范。在本质上,JDBC是一种使用纯SQL与数据库交互的API --发送查询和检索结果。它没有对象或层次结构的概念。在使用JDBC时,将结果集(本质上是来自一个或多个数据库表的值的行/列矩阵,由SQL查询返回)转换为Java对象是您的责任。

现在,要理解和使用JDBC,您必须对SQL有一定的理解和应用知识。随之而来的还有对关系数据库是什么、如何使用它以及表、列、键和关系等概念的必要洞察。除非您至少对数据库、SQL和数据建模有基本的了解,否则您将无法充分利用JDBC,因为JDBC实际上只是这些东西之上的一种抽象。

票数 26
EN

Stack Overflow用户

发布于 2012-08-09 18:50:02

JDBC是JPA的前身。

JDBC是Java世界和数据库世界之间的桥梁。在JDBC中,您需要公开CRUD操作所需的所有详细信息,例如表名、列名,而在JPA (底层使用JDBC )中,您也可以指定数据库元数据的这些详细信息,但使用的是Java注释。

因此,JPA为您创建更新查询,并管理您查找或创建/更新的实体(它也做得更多)。

如果您希望在不使用Java容器的情况下执行JPA,那么Spring及其库可以与完全相同的Java批注一起使用。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11881548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档