Hibernate中通過實體類來生成資料庫表
阿新 • • 發佈:2019-02-13
常規的思路是,設計好資料庫,建好表,藉助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,
主要是 在包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介面。實現該介面是可選的,但建議實體類都實現這個介面。