我学习Java EE和我下载了GlassFish的为同一日食。 我看到一些例子,也阅读Oracle文档知道所有关于Java EE 5连接到数据库是很简单的。 我开了一个动态的Web项目,创建一个会话EJB,我用的EntityManager并与get方法可以访问存储的数据表。
我的下一个项目,我必须创建一个简单的类,然后访问某些数据库表。 我遇到的第一个问题是,PersistenceUnit属性将仅由EJB,Servlet的等等,而不是一个简单的Java类的认可。 所以后来我不能使用EntityManager的方式(或者可以吗?)
有人问我通过“JDBC”的路要走。 我遇到的第一个问题是要得到数据库的连接。 似乎这一切都必须是硬编码。 我有一个persistence.xml中与我可以很容易地配置数据库连接。 即使建立了数据库驱动程序很容易。 也有没有在JDBC get / set方法来访问表的实体。
如何理解JPA和持久性有关JDBC? 什么是JPA想了? 为什么会出现设置/ get方法? 可有人扔在这两个本质的一些光,什么都没有“行话”的优点/缺点? 也请提出一些链接。 一个简单的谷歌搜索JPA和JDBC的差异导致我一些网站充斥着“术语”我不能跟着:(
通俗地说:
JDBC是用于连接到数据库直接运行反对SQL标准-如SELECT * FROM USERS
等可以返回的数据集,你可以在你的应用程序处理,你可以做所有常用的东西像INSERT
, DELETE
,运行存储过程等,这是最落后的Java数据库访问(包括JPA提供者)的基本技术之一。
一个与传统的JDBC应用程序的问题是,你可以经常有一些蹩脚的代码,其中大量的数据集和对象之间的映射发生,逻辑与SQL等混合
JPA为对象关系映射的标准。 这是一种技术,它允许你在代码和数据库表对象之间的映射。 这可“隐藏”从开发商的SQL,使所有这些处理是Java类,而提供商可以让您保存并神奇地加载它们。 大多数情况下,在getter和setter XML映射文件或注解可以用来告诉JPA提供者,你的对象地图上的字段,其在数据库领域。 最有名的JPA提供者是Hibernate的 ,所以它开始为具体的例子的好地方。
其他例子包括OpenJPA中,排名靠前,等
引擎盖下,Hibernate和其他大多数供应商的JPA写SQL和使用JDBC来读取和往返于DB写。
JPA和JDBC的主要区别是抽象的水平。
JDBC是与数据库交互的低等级标准。 JPA是为了同样的目的更高层次的标准。 JPA允许你使用你的应用程序中的对象模型,它可以使你的生活变得更轻松。 JDBC允许你直接做更多的事情与数据库,但它需要更多的关注。 有效地使用JPA有些任务不能得到解决,但也可以用JDBC更有效地解决。
JDBC是一个非常低的水平(及以上)规格比JPA。 在它的最基本的要素,JDBC是使用纯SQL与数据库交互的API - 发送的查询和检索结果。 它没有对象或层次的概念。 当使用JDBC,它给你翻译的结果集(基本来自一个或多个数据库表中的值的行/列的矩阵,通过你的SQL查询返回)为Java对象。
现在,理解和使用JDBC,你有一定的了解和SQL的工作知识是必不可少的。 与还配备所需的洞察到关系型数据库是什么,你如何与它和如表,列,键和关系的概念工作。 除非你有至少数据库的一个基本的了解,SQL和数据建模,你将无法取得多大JDBC的使用,因为它真的只有在这些事情上面薄薄的抽象。
JDBC是JPA的前身。
JDBC是Java世界和数据库世界的桥梁。 在JDBC,你需要公开需要的CRUD操作,如表名,列名的所有肮脏的细节,而在JPA(这是下面使用JDBC),还可以指定数据库的元数据的那些细节,但随着使用Java注释。
因此,JPA为您创建更新查询并管理您查找或创建/更新(它的还有很多)的实体。
如果你想要做的JPA没有Java EE容器,那么春节和它的库可以用非常相同的Java注解使用。