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

來源:互聯網
上載者:User

標籤:介紹   說明   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映射關係

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.