1. 程式人生 > >Hibernate中通過實體類來生成資料庫表

Hibernate中通過實體類來生成資料庫表

常規的思路是,設計好資料庫,建好表,藉助MyEclipse(也可以是其他IDE),自動生成對映,或者自己寫對映。早就聽說hibernate中可以自動生成表。但是一直沒有試驗。今天首先介紹其中的一個屬性hbm2ddl.auto,這個就是這個方案的核心屬性,有四個值:create,create-drop,update看看我們從網上查詢到得資料: 

<!-- 啟動時刪資料庫中的表,然後建立,退出時不刪除資料表 
<property name="hbm2ddl.auto">create</property>--> 
<!-- 啟動時刪資料庫中的表,然後建立,退出時自動刪除所有表 


<property name="hbm2ddl.auto">create-drop</property>--> 
<!-- 自動修改,如果表結構與實體類不一致,那麼就修改表使它們一致,資料會保留 
<property name="hbm2ddl.auto">update</property>--> 
<!-- 自動校驗,如果表結構與實體類不一致,那麼不做任何操作,報錯 
<property name="hbm2ddl.auto">validate</property>--> 

這樣的話,設計實體類,直接寫POJO,
然後寫對映,讓hibernate幫我們生成資料庫表。或者我們知道了manytoone onetomany  我們完全可以只用註釋的了。實體類。關於註釋底下有說明。


主要是 在包ejb3-persistence 中,這種也是主要的是用到得是jpa的這種規則。我常用的幾個屬性在下面給了說明。 


— @Entity:表示該類是一個可持久化的是實體類,標記了該註釋的類可以由實體管理器EntityMangager來管理。

— @Table:表示該實體類對映為資料庫中的指定的一個表。例如本例中Customer實體對映為資料庫的表“customer”,使用的註釋是@Table(name = "customer"),其中name的值為資料對應的表名“customer”。 


— @Column:表示實體類的屬性對應表中的指定欄位。例如本例中屬性“shortName”標註為@Column(name = "short_name") ,其中name的值為資料庫中對應欄位名“short_name”。 

— @Id:表示該屬性為該實體的主鍵。例如本例中屬性“id”標註為@Id,表示屬性id為表中對應的主鍵。 

— 除了這些註釋以外,使一個POJO類成為一個可持久化的Entity類還需要注意以下幾點。 

Ø 實體類必須有一個預設的無引數的構造方法,並且無引數的構造方法必須是public或protected的。 

Ø 若要使實體類能夠支援序列化,例如支援遠端呼叫,可以實現Serializable介面。實現該介面是可選的,但建議實體類都實現這個介面。