1. 程式人生 > >《Java從入門到放棄》入門篇:使用註解的方式配置hibernate映射關系

《Java從入門到放棄》入門篇:使用註解的方式配置hibernate映射關系

如果 borde 版本 tar -s 相關 generate rate p s

之前我們都是使用配置文件的方式來生成的代碼,雖然和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映射關系