實體 Bean 定義規範
- 標註
@Entity,選填 @Table(name="...")
- 主鍵標註
@Id,產生策略:AUTO/IDENTITY/SEQUENCE/TABLE/NONE
- 實作
Serializable,提供無參建構子
- 持久化屬性型別:基本型別、String、日期時間、Byte[]、Char[]、其他實體、集合
核心註解速查
| 註解 | 用途 | 關鍵屬性 |
| @Entity | 宣告實體類別 | name, access(PROPERTY/FIELD) |
| @Table | 指定主表 | name, uniqueConstraints |
| @Id | 主鍵欄位 | generate(AUTO/IDENTITY/...) |
| @Column | 欄位映射細節 | name, nullable, length, precision, scale |
| @OneToMany | 一對多關聯 | cascade, fetch(LAZY/EAGER), targetEntity |
| @ManyToOne | 多對一關聯 | cascade, fetch, optional |
| @JoinColumn | 外鍵欄位 | name, referencedColumnName |
EntityManager 核心 API
void persist(Object entity) // 新增/儲存
T merge(T entity) // 合併/更新
void remove(Object entity) // 刪除
T find(Class cls, Object pk) // 主鍵查詢
Query createQuery(String ejbql) // JPQL 查詢
void flush() // 強制同步至資料庫
void refresh(Object entity) // 重新載入覆蓋本地變更
完整範例:學生成績管理
Student (1) —@OneToMany— (N) Score
TeacherBean (Stateful) 統籌建立學生與成績
- Client 驗證儲存與查詢
部署流程
- JBoss
run.bat -c all
- Ant
ejbjar 打包部署
- Ant
run 執行測試
- HSQL 管理工具檢視自動建立的表結構