淺談定制Hibernate映射
在向大家詳細介紹定制Hibernate映射之前,首先讓大家了解下Hibernate自動生成主鍵,然后全面介紹定制Hibernate映射。
Hibernate 能夠出色地自動生成主鍵。Hibernate/EBJ 3 注釋也可以為主鍵的自動生成提供豐富的支持,允許實現(xiàn)各種策略。下面的示例說明了一種常用的方法,其中Hibernate將會根據(jù)底層數(shù)據(jù)庫來確定一種恰當?shù)逆I生成策略:
- public Long getId() {
- return id;
- }
定制Hibernate映射
默認情況下,Hibernate會將持久類以匹配的名稱映射到表和字段中。例如,前一個類可以與映射到以如下代碼創(chuàng)建的表中:
- CREATE TABLE MODELPLANE
- (
- ID long,
- NAME varchar
- )
如果您是自己生成并維護數(shù)據(jù)庫,那么這種方法很有效,通過省略代碼可以大大簡化代碼維護。然而,這并不能滿足所有人的需求。有些應用程序需要訪問外部數(shù)據(jù)庫,而另一些可能需要遵從公司的數(shù)據(jù)庫命名慣例。如果有必要,您可以使用 @Table 和 @Column 注釋來定制您自己的持久性映射,如下所示:
- public class ModelPlane {
- private Long id;
- private String name;
- @Id
- @Column(name="PLANE_ID")
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- @Column(name="PLANE_NAME")
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
該內容將映射到下表中:
- CREATE TABLE T_MODEL_PLANE
- (
- PLANE_ID long,
- PLANE_NAME varchar
- )
也可以使用其他圖和列的屬性來定制Hibernate映射。這使您可以指定諸如列長度、非空約束等詳細內容。Hibernate支持大量針對這些注釋的屬性。下例中就包含了幾種屬性:
- ...
- @Column(name="PLANE_ID", length=80, nullable=true)
- public String getName() {
- return name;
- }
- ...
【編輯推薦】