1、JPA(Java持久性API)简介
JPA教程提供了Java持久性API的基本和高级概念。
JPA只是一个简化对象性关系映射来管理Java应用程序中的关系数据的规范。它提供了一个平台,可以直接使用对象而不是使用SQL语句。
JPA(Java持久性API)是Java的一个规范。它用于在Java对象和关系数据之间保存数据。JPA充当面向对象的领域模型和关系数据库之间的桥梁。
JPA只是一个规范,它本身不执行任何操作。它需要一个实现。因此,像Hibernate,TopLink和iBatis这样的ORM工具实现了JPA数据持久性规范。
JPA 2.0:
- 支持验证
- 它扩展了对象关系映射的功能
- 它共享缓存支持的对象
JPA 2.1:
- 允许提取对象
- 它为条件更新/删除提供支持
- 它生成模式
JPA 2.2:
- 它支持Java8的日期和时间
- 它提供了 @Repeatable注释,当想要将相同的注释应用到声明或类型用法时可以使用它
- 它允许JPA注释在元注释中使用
- 它提供了流式查询结果的功能
2、创建实体
Java类可以很容易地转换成实体。对于实体转换,基本要求是:
- 无参数构造函数
- 注解
示例:将常规类转化成实体类。
eg:简单的学生类(Student),代码如下:
public class Student {
private int id;
private String name;
private long fees;
public Student() {
}
public Student(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getFees() {
return fees;
}
public void setFees(long fees) {
this.fees = fees;
}
}
上面的类是一个常规的java类,有三个属性: id
, name
和 fees
。要将此类转换为实体,请在此类中添加@Entity
和@Id
注解。
@Entity
- 这是一个标记注释,表明这个类是一个实体。这个注释必须放在类名称上。@Id
- 此注释位于持有持久标识属性的特定字段上。该字段被视为数据库中的主键。
简单的实体类
import javax.persistence.*;
@Entity
public class Student {
@Id
private int id;
private String name;
private long fees;
public Student() {
}
public Student(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getFees() {
return fees;
}
public void setFees(long fees) {
this.fees = fees;
}
}
3、JPA对象关系映射
对象关系映射(ORM)是一种功能,用于通过将对象状态映射到数据库列来开发和维护对象和关系数据库之间的关系。 它能够轻松处理(或执行)各种数据库操作,如插入,更新,删除等。
4、JPA实体简介
一般来说,实体是在一个单一的单位联合在一起的一组状态。 在添加行为时,实体表现为对象并成为面向对象范例的主要组成部分。 所以,实体可以理解为Java持久性库中定义的对象。
4.1 实体属性
这些是对象必须具有的实体的属性 :
- 持久性 - 如果一个对象存储在数据库中并且可以随时访问,则该对象称为持久性。
- 持久性标识(主键)- 在Java中,每个实体都是唯一的,并表示为对象标识。 同样,当对象标识存储在数据库中时,它被表示为持久性标识。 该对象标识等同于数据库中的主键。
- 事务性- 实体可以执行各种操作,例如:创建,删除,更新。 每个操作都会对数据库进行一些更改。它确保无论数据库中的任何更改是原子级成功还是失败。
- 粒度 - 实体不应该是基元,原始包装或具有单维状态的内置对象。
4.2 实体元数据
每个实体都与一些代表它的信息的元数据相关联。 这个元数据不是数据库,而是存在于类内部或外部。 此元数据可以采用以下形式 :
- 注解 - 在Java中,注解是表示元数据的标签形式。 这个元数据保存在类中。
- XML - 在此形式中,元数据在XML文件的类外部保存。