標籤:介紹 說明 name space center cas 簡單 .com get
之前我們都是使用設定檔的方式來產生的程式碼,雖然和JDBC比較簡單了很多,但每次都在修改時需要既改實體類又改對應檔。還是有點麻煩。
所以,這一篇,我們來說說使用註解的方式來在接在實體類上配置映射關係。
第一步:建立一個項目,或者把之前項目中的實體類、對應檔,還有hibernate中的mapping標籤都刪除,然後在DBBrowser中再次產生實體類。如:
紅框中的選項就表示直接在POJO上以註解的方式加上映射關係。注意括弧內的hibernate版本,必須是3.2及以上的才行。
產生後的實體類(Author和Blog)代碼我就不複製上來了,內容太多。使用到的註解如下所示:
@Entity
@Table(name = "author", catalog = "blogdb")
@Id
@GeneratedValue
@Column(name = "id", unique = true, nullable = false)
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "author")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "author_id")
這些註解就不一一介紹了。主要說明一下映射關係的註解。
cascade屬性的值對應有javax.persistence.CascadeType的幾個選項。
PERSIST:添加時級聯。
MERGE:更新時級聯。
REMOVE:刪除時級聯。
ALL: 所有操作都級聯(預設)。
如果你設定為ALL以外的值,你會發現,完全沒有級聯!!!
騙子啊騙子!!!!!
所以,如果你只需要在添加或更新時級聯,一般這樣設定。
@Cascade(value = {CascadeType.SAVE_UPDATE}),注意這兒的CascadeType是org.hibernate.annotations.CascadeType。
fetch屬性:是否延時載入。值有:FetchType.LAZY和FetchType.EAGER。
mappedBy = "author":相當於之前的inverse="true"。
別的東西就沒什麼好說的了,隨便猜都能猜出來效果,哈哈!!!
“軟體思維”部落格地址:
http://softi.blog.51cto.com/
http://www.cnblogs.com/yixueyuan/
感興趣的小夥伴可以到上面兩個地址看相關的其它博文。
《Java從入門到放棄》入門篇:使用註解的方式配置hibernate映射關係