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日】
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
- SpringData-JPA操作数据库
- SpringData JPA操作MySQL数据库
- SpringMVC+JPA+SpringData配置
- SpringMVC+JPA+SpringData配置
- springdata jpa mongodb映射
- SpringBoot-SpringData-JPA集成
- SpringData整合JPA
- Springboot+SpringData+jpa
- SpringData JPA 分页使用
- springdata jpa的用法
- SpringData JPA分页查询
- springBoot整合springData Jpa
- 原来幸福可以这么简单
- springboot JPA操作数据库
- SpringBoot—访问关系型数据库—SpringData JPA
- springMVC、spring、jpa、springData整合
- jemalloc 快速上手攻略
- 深度学习在推荐平台中的运用
- django-pure-pagination分页功能的实现
- 存储接口及DAS,NAS,SAN等概念
- .dll,.lib,.def 和 .exp文件
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
- 4 第一个程序:1.exe
- 洛谷-3930(我在洛谷上也写了题解)
- Struts2自动装配
- python unicode 和 str相互转化
- Android样式开发之shape篇
- surfire单元测试添加jvm参数
- 2017.10.22
- softmax logistic loss详解