JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA

来源:互联网 发布:下载instagram软件 编辑:程序博客网 时间:2024/06/05 14:39

谈起操作数据库,大致可以分为几个阶段:首先是 JDBC 阶段,初学 JDBC 可能会使用原生的 JDBC 的 API,再然后可能会使用数据库连接池,比如:c3p0、dbcp,还有一些第三方工具,比如 dbutils 等,LZ为 JDBC 是贯穿始终的,即使到了框架部分,也会对 JDBC 进行整合,此阶段还是自己手写 SQL 语句;下一个阶段就是 Hibernate,大家体会到了操作数据库可以不用自己手动编写 SQL,调用 Hibernate 提供的 API 即可。今天给大家介绍的是操作数据库的另一个模块 JPA,即 Java 持久层的 API,JPA 如果与 SpringData 结合起来,会发出不一样的“化学反应”,大家拭目以待~

一、JPA 概述

1. Java Persistence API(Java 持久层 API):用于对象持久化的 API

2. 作用:使得应用程序以统一的方式访问持久层

3. 前言中提到了 Hibernate,那么JPA 与 Hibernate究竟是什么关系呢:

1)JPA 是 Hibernate 的一个抽象,就像 JDBC 和 JDBC 驱动的关系

2)JPA 是一种 ORM 规范,是 Hibernate 功能的一个子集 (既然 JPA 是规范,Hibernate 对 JPA 进行了扩展,那么说 JPA 是 Hibernate 的一个子集不为过)

3)Hibernate 是 JPA 的一个实现

4. JPA 包括三个方面的技术:

1)ORM 映射元数据,支持 XML 和 JDK 注解两种元数据的形式

2)JPA 的 API

3)查询语言:JPQL

本文也将详细介绍JPA ORM 映射元数据的注解方式和 JPA 的 API 以及 JPQL 三个方面

二、JPA 的 Helloworld

1.在 Eclipse 中创建 JPA 的工程:New ---> Project ---> JPA Project  输入工程名,选择版本为 2.0,点击 Next,

若是初次创建 JPA 的工程,可能会出错,提示必须有一个 user library,导致无法创建工厂,此问题的解决方案,LZ另开一个博客,手把手教你解决无法创建 JPA 工程的问题,大家可前去查看,在此不做赘述。

2.在当前工程下新建一个 lib 目录,用来存放各种 jar 包,此时工程的目录结构为:

导入 hibernate 的 jar 包和 jpa 的jar包,注意:需要自己手动的 Build Path:

连接数据库,不要忘记添加 MySQL 的驱动。

3. 大家会发现当我们创建好 jpa 的工程时在 src 的 META-INF 目录下自动生成了一个 persistence.xml 文件,我们的配置都编写在此文件中,接下来就在此文件中进行各种配置

1)打开此文件,选择左下角的 Connection 选项,修改 Transaction Type 为 Resource Local,填写下方的 Driver、Url、User、Password 信息保存后,便会在左下角最后一个 Source 选项中自动生成数据库配置的基本信息 (lZ 创建的数据库为 jpa2)

2)其他配置(大家注意一点配置 ORM 产品时,要把 <provider> 节点放到 <provider> 节点上面,否则会出小红×):

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <persistence version="2.0" 3     xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 5     <persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL"> 6  7         <!-- 使用什么 ORM 产品作为 JPA 的实现 --> 8         <provider>org.hibernate.ejb.HibernatePersistence</provider> 9 10         <properties>11             <!-- 数据库连接的基本信息 -->12             <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />13             <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa2" />14             <property name="javax.persistence.jdbc.user" value="root" />15             <property name="javax.persistence.jdbc.password" value="qiqingqing" />16             <!-- 配置 JPA 实现产品的基本属性,即 Hibernate 的基本属性 -->17             <property name="hibernate.show_sql" value="true" />18             <property name="hibernate.format_sql" value="true" />19             <property name="hibernate.hbm2ddl.auto" value="update" />20         </properties>21 22     </persistence-unit>23 </persistence>
复制代码

3)创建持久化类 Customer,并为其添加 JPA 的注解,此时会有错误,原因是没有把 Customer 类添加到 persistence.xml 文件中,添加进去便没有了错误

【本文由“程序员师傅”发布,2017年10月22日】

原创粉丝点击