文章寫 Entity 的生命週期,而人類的生命週期喜怒哀樂讓我想到 Sasha 許多首歌
今年很幸運搶到她的演唱會門票,現場沒話說得完美,極度推薦這個有些 sad 有時有點 emo 的才女!
試想,當我們在一個系統裡輸入一串文字、上傳一張照片,這些資料會去哪裡?如何被儲存、被管理?今天 Day 15 就來了解 Entity 的生命週期
什麼是 Entity?
資料就像是一個人,每個人都有獨特的身分證、名字或一些基本資料。在 SpringBoot 中這樣的「人」就叫做 Entity。簡單來說,Entity 是用來代表資料庫中的一個「實體」,例如:用戶 user、訂單 order 或商品 product 等。
在 Spring Dat JPA 中,Entity 代表資料庫的一張表(table)。它不僅僅是一個普通的 Java 類別,而是透過特定的註解與資料庫中的特定表格或欄位進行綁定。
Entity 的生命週期和操作
每個「人」從出生到離世,都有他的生命週期。Entity 也不例外,包括:
Transient
- 新建立的 Entity,但還沒有被儲存到資料庫。Managed
- 已經被儲存/持久化到資料庫的 Entity。Detached
- 曾經被儲存但後來被移除管理的 Entity,與當前 session 脫鉤。Removed
- 被標記為即將從資料庫刪除的 Entity。在 SpringBoot 中,我們可以透過 JPA (Java Persistence API) 來操作這些 Entity,像是新增、查詢、更新或刪除。
透過 JPA 的 EntityManager
,我們可以管理這些生命週期,例如使用 persist
進行儲存,或使用 remove
進行刪除。
@Entity
註解,告知 Spring Boot 這個類別應被視為一個 Entity。其他常見的註解包括 @Table
(指定對應的資料表名稱)、@Column
(指定對應的欄位屬性)、@Id
(標明主鍵) 等。