| 操作 | 方法 | 狀態轉換 | SQL 時機 |
|---|---|---|---|
| 保存 | save()/persist() | Transient → Persistent | flush/commit 時 INSERT |
| 刪除 | delete()/remove() | Persistent → Removed | flush/commit 時 DELETE |
| 更新 | update()/merge() | Detached → Persistent | flush/commit 時 UPDATE |
| 保存或更新 | saveOrUpdate() | 自動判斷 ID 存在性 | INSERT 或 UPDATE |
save():立即賦予 ID,返回生成標識符persist():JPA 標準,不保證立即生成 IDupdate():要求對象在數據庫存在,否則拋異常merge():不存在則 INSERT,存在則 UPDATE,返回新管理實例@OneToMany(cascade = CascadeType.ALL) // 包含 PERSIST, MERGE, REMOVE, REFRESH, DETACH private Set<Child> children;
hibernate.jdbc.batch_size:啟用批量 INSERT/UPDATEhibernate.order_inserts/updates:排序減少語句切換StatelessSession):繞過一級緩存,適合大數據導入

圖片展示了實體狀態流轉、級聯持久化、批量處理等核心場景的時序與關係圖。