JPA, 全称Java Persistence API,翻译为JAVA持久层应用接口,JPA自己并非一个框架,它本质上是一种ORM规范,Hibernate是一个框架,也是JPA的一种实现。html
刚才咱们说JPA是JAVA持久层应用接口,那什么是持久层呢?
Java有三层架构,分别为持久层,业务层和表现层。
咱们简称为SSH,即Struts(表示层)+Spring(业务层)+Hibernate(持久层)。
Struts是一个表示层框架,进行流程控制,主要做用是页面展现,发送请求,接受请求,
Spring就是咱们熟知的后端框架,进行业务流转,
Hibernate是一个持久层框架,它只负责与关系数据库的操做。java
咱们原来使用JDBC链接来读写数据库,咱们最多见的就是打开数据库链接、使用复杂的SQL语句进行读写、关闭链接,得到的数据又须要转换或封装后往外传,这是一个很是烦琐的过程。这时出现了Hibernate框架,它须要你建立一系列的持久化类,每一个类的属性均可以简单的看作和一张数据库表的属性一一对应。这样咱们不用在关注数据库,只须要持久化类就能够完成增删改查的功能。使咱们的软件开发真正面向对象, 而不是面向混乱的代码。spring
@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初始化数据表架构