什么是JPA

前言

JPA, 全称Java Persistence API,翻译为JAVA持久层应用接口,JPA自己并非一个框架,它本质上是一种ORM规范,Hibernate是一个框架,也是JPA的一种实现。
image.pnghtml

JPA的优点

  1. 标准化: 提供相同的 API,这保证了基于 JPA 开发的企业应用可以通过少许的修改就可以在不一样的 JPA 框架下运行。
  2. 简单易用,集成方便: JPA 的主要目标之一就是提供更加简单的编程模型,在 JPA 框架下建立实体和建立 Java 类同样简单,只须要使用 javax.persistence.Entity 进行注解;JPA 的框架和接口也都很是简单。
  3. 可媲美JDBC的查询能力: JPA的查询语言是面向对象的,JPA 定义了独特的JPQL,并且可以支持批量更新和修改、JOIN、GROUP BY、HAVING 等一般只有 SQL 才可以提供的高级查询特性,甚至还可以支持子查询。
  4. 支持面向对象的高级特性: JPA 中可以支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型。

Java三层架构

刚才咱们说JPA是JAVA持久层应用接口,那什么是持久层呢?
Java有三层架构,分别为持久层,业务层和表现层。
咱们简称为SSH,即Struts(表示层)+Spring(业务层)+Hibernate(持久层)。
Struts是一个表示层框架,进行流程控制,主要做用是页面展现,发送请求,接受请求,
Spring就是咱们熟知的后端框架,进行业务流转,
Hibernate是一个持久层框架,它只负责与关系数据库的操做。
image.pngjava

Hibernate

咱们原来使用JDBC链接来读写数据库,咱们最多见的就是打开数据库链接、使用复杂的SQL语句进行读写、关闭链接,得到的数据又须要转换或封装后往外传,这是一个很是烦琐的过程。这时出现了Hibernate框架,它须要你建立一系列的持久化类,每一个类的属性均可以简单的看作和一张数据库表的属性一一对应。这样咱们不用在关注数据库,只须要持久化类就能够完成增删改查的功能。使咱们的软件开发真正面向对象, 而不是面向混乱的代码。spring

JPA中的注释

@Entity注释
持久对象有时称为实体。附加@Entity到类,此类告知JPA应该保留此类及其对象。
具备此注释的klass类。数据库

@Entity
public class Klass {
...class body
}

@Table注释
告诉JPA将实体(Klass类)持久化到Klass表中。参数name默认为实体名称,所以若是实体名称与映射的表名称一致时,@Table 注解经常能够省略。以下所示。编程

@Entity
@Table(name="klass")
public class Klass {
...class body
}

指定主键
咱们使用JPA的@Id注释将id字段指定为Klass主键。用@GeneratedValue(strategy = GenerationType.IDENTITY)定义主键自增属性。后端

@Entity
public class Klass {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}

定义关系类型
实体(数据表)与实体间的关系分为如下四种:1对1,1对多,多对1,多对多;在英文中分别是OneToOne、OneToMany、ManyToOne、ManyToMany,在JPA声明多对一外键以下api

@ManyToOne
private Teacher teacher;

总结

使用JPA大大简化了咱们构造数据库的的过程,也是咱们的过程面向对象,而且在团队开发中,也使得代码与本地数据库一致。Spring Data JPA也是JPA,它更简单、更强大。springboot

参考

什么是JPA?Java Persistence API简介
What is JPA? Introduction to the Java Persistence API
Spring Boot2 系列教程(二十三)理解 Spring Data Jpa
java三层架构:持久层、业务层、表现层的理解
第一节 JPA初始化数据表架构

相关文章
相关标签/搜索