《Java從入門到放棄》入門篇:使用註解的方式配置hibernate映射關系
之前我們都是使用配置文件的方式來生成的代碼,雖然和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"
別的東西就沒什麽好說的了,隨便猜都能猜出來效果,哈哈!!!
“軟件思維”博客地址:
http://softi.blog.51cto.com/
http://www.cnblogs.com/yixueyuan/
感興趣的小夥伴可以到上面兩個地址看相關的其它博文。
《Java從入門到放棄》入門篇:使用註解的方式配置hibernate映射關系