我正在学习Java EE,并且下载了带有glassfish的日食。我看到了一些示例,还阅读了Oracle文档,以全面了解Java EE5。连接到数据库非常简单。我打开了一个动态Web项目,创建了一个会话EJB,我使用EntityManager并通过get方法可以访问存储的数据表。
对于我的下一个项目,我创建了一个简单的类,然后访问一些数据库表。我遇到的第一个问题是PersistenceUnit属性只能由EJB,Servlet等识别,而不是简单的Java类。因此,我无法使用EntityManager方式(或者可以吗?)
我被要求通过“ JDBC”方式进行操作。我遇到的第一个问题是获得与数据库的连接。似乎所有这些都必须经过硬编码。我有一个persistence.xml,可用来轻松配置数据库连接。甚至为数据库设置驱动程序都很容易。JDBC中也没有用于访问表实体的get / set方法。
我如何了解JPA和与JDBC相关的持久性?JPA的目的是什么?为什么会有set / get方法?有人可以阐明这两者的本质吗?没有“专业术语”的利弊是什么?还请提出一些链接。一个简单的Google搜索JPA和JDBC差异导致我进入一些我无法理解的充满“术语”的网站:(
用外行的话来说:
JDBC是用于连接到数据库直接和运行SQL反对标准-例如SELECT * FROM USERS,等可以返回的数据集,你可以在你的应用程序处理,你可以做所有常用的东西一样INSERT,DELETE运行存储过程等它是大多数Java数据库访问(包括JPA提供程序)背后的基础技术之一。
SELECT * FROM USERS
INSERT
DELETE
传统JDBC应用程序的问题之一是,您经常会有一些糟糕的代码,在这些代码中数据集和对象之间会发生大量映射,逻辑与SQL混合在一起,等等。
JPA是对象关系映射的标准。这是一项允许您在代码表和数据库表中的对象之间进行映射的技术。这可以从开发人员“隐藏” SQL,以便它们处理的只是Java类,并且提供程序允许您保存它们并神奇地加载它们。通常,可以将XML映射文件或getter和setter上的注释用于告诉JPA提供程序对象上的哪些字段映射到DB中的哪些字段。最著名的JPA提供程序是Hibernate,因此这里是开始具体示例的好地方。
其他示例包括OpenJPA,toplink等。
在后台,Hibernate和大多数其他JPA提供程序编写了SQL,并使用JDBC在数据库之间进行读写。