直接回答
是的,Hibernate 逆向工程生成實體類關聯 (OneToMany, ManyToOne 等) 時,預設依賴資料庫中定義的外鍵約束。 若資料庫無外鍵,生成的實體類將不包含關聯關係,僅為獨立類別。
為何不建議依賴資料庫外鍵?
- 開發期靈活性降低:頻繁修改 Schema 需 DBA 介入,遷移腳本複雜。
- 效能考量:外鍵檢查增加寫入開銷,高併發場景常移至應用層控制。
- 分庫分表困難:跨庫外鍵無法建立,微服務架構下更不適用。
推薦做法:應用層維護關聯
- 資料庫僅建立索引,不建外鍵約束。
- 在實體類上手動添加
@OneToMany、@JoinColumn 等註解。
- Service 層透過事務邏輯保證資料一致性 (如級聯刪除、檢查引用完整性)。
結語
逆向工程適合快速啟動專案,但長期維護建議採用「資料庫無外鍵、應用層控制關聯」的架構,兼顧效能與彈性。