JPA(Java Persistence API)学习三(JPA实体)
1.介绍
一般来说,实体是在一个单一的单位联合在一起的一组状态。
在添加行为时,实体表现为对象并成为面向对象范例的主要组成部分。
所以,实体可以理解为Java持久性库中定义的对象。
2.实体属性(对象必须具有的实体的属性)
持久性 - 如果一个对象存储在数据库中并且可以随时访问,则该对象称为持久性。
持久性标识 - 在Java中,每个实体都是唯一的,并表示为对象标识。
同样,当对象标识存储在数据库中时,它被表示为持久性标识。
该对象标识等同于数据库中的主键。
事务性 - 实体可以执行各种操作,例如:创建,删除,更新。 每个操作都会对数据库进行一些更改。
它确保无论数据库中的任何更改是原子级成功还是失败。
粒度 - 实体不应该是基元,原始包装或具有单维状态的内置对象。
3.实体元数据
概述:每个实体都与一些代表它的信息的元数据相关联。
这个元数据不是数据库,而是存在于类内部或外部。
此元数据可以采用以下形式:
注解 - 在Java中,注解是表示元数据的标签形式。 这个元数据保存在类中
XML - 在此形式中,元数据在XML文件的类外部保存。
4.创建实体
概述:Java类可以很容易地转换成实体。
实体转换,基本要求:无参数构造函数,注解
例子:
简单的一个学生类(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
public class Student {
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;
}
}
学习来源:https://www.yiibai.com/jpa/jpa-creating-an-entity.html#article-start