動態

詳情 返回 返回

什麼是 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 語句。

Add a new 評論

Some HTML is okay.