什么是 JPA 实体类
JPA 实体类(JPA Entity)是 Java 程序中与数据库表一一映射的特殊类,用于将 Java 对象与数据库表记录进行关联,是 ORM(Object-Relational Mapping,对象关系映射)思想的核心载体。简单说,一个 JPA 实体类对应数据库中的一张表,类中的字段对应表中的列,类的实例对应表中的一行记录。
JPA 实体类的核心特征
必须用
@Entity
注解标记
这是识别实体类的 “身份证”,告诉 JPA:“这个类需要与数据库表建立映射”。必须有主键(
@Id
注解)
对应数据库表的主键(PRIMARY KEY),用于唯一标识一条记录,没有主键会报错。字段与数据库表列映射
类中的成员变量默认对应表中的同名列(可通过@Column
注解自定义列名、类型、约束等)。被 JPA 容器管理
实体类的创建、保存、更新、删除等操作由 JPA 框架(如 Hibernate)自动处理,无需手动写 SQL。
一个标准的 JPA 实体类示例
java
运行
import jakarta.persistence.*;
import java.time.LocalDateTime;
// 1. 标记为实体类(必加)
@Entity
// 2. 指定对应数据库表名(可选,默认用类名小写)
@Table(name = "t_user")
public class User {
// 3. 主键(必加 @Id)
@Id
// 4. 主键生成策略(自增 ID)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // 对应表中的 id 列(主键)
// 5. 字段映射(name 指定列名,nullable 设为非空)
@Column(name = "user_name", nullable = false, length = 50)
private String name; // 对应表中的 user_name 列
@Column(name = "user_age")
private Integer age; // 对应表中的 user_age 列
@Column(name = "create_time")
private LocalDateTime createTime; // 对应表中的 create_time 列
// 6. 必须有 getter/setter(JPA 需通过反射访问字段)
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
// ... 其他 getter/setter
}
对应的数据库表结构(自动生成)
当配置 spring.jpa.hibernate.ddl-auto=update 时,JPA 会根据实体类自动创建表 t_user,结构如下:
列名 类型 约束
id bigint 主键、自增
user_name varchar(50) 非空
user_age int 可空
create_time datetime 可空
为什么需要 JPA 实体类?
简化数据库操作:通过操作 Java 对象(如 user.setName(“张三”))替代写 SQL,降低开发难度。
屏蔽数据库差异:同一套实体类代码可适配 MySQL、Oracle 等不同数据库,无需修改逻辑。
自动维护映射关系:JPA 自动处理对象与表、字段与列的映射,开发者无需手动同步两者结构。
简单说,JPA 实体类让开发者可以用 “面向对象” 的思维操作数据库,而不用直接写 SQL 语句。
本作品采用《CC 协议》,转载必须注明作者和本文链接