天天看點

Hibernate注解

  最近正在學習Hibernate通過注解(annotation)來管理映射關系,以前都是通過XML映射檔案。下面拿個小例子說一下。

Hibernate注解

  一篇部落格随筆可以分到不同的類中,一個類中又可以包含許多不同的部落格随筆。就如同部落格園的設計。也就是上圖中 部落格-組 和 部落格-消息是多對多的映射。

  雙向N-N關聯, 兩端都要使用Set集合屬性,兩端都增加對集合屬性的通路。雙向N-N關聯沒有太多的選擇,隻能采用連接配接表來建立兩個實體之間的關聯關系。

  PO = POJO(plain ordinary java object) + 注解

  補充一下:Dao層的操作,需要掌握Hibernate中資料的三種狀态

  1,  臨時狀态(Transient):用new建立的對象,它沒有持久化,沒有處于Session中,處于此狀态的對象叫臨時對象;

  2,  持久化狀态(Persistent):已經持久化,加入到了Session緩存中。如通過hibernate語句儲存的對象。處于此狀态的對象叫持久對象;

  3,  遊離狀态(Detached):持久化對象脫離了Session的對象。如Session緩存被清空的對象。

  

Hibernate注解
Hibernate注解

盜圖兩張

  1.對于剛建立的一個對象,如果session中和資料庫中都不存在該對象,那麼該對象就是瞬時對象(Transient)。

  2.瞬時對象調用save方法,或者離線對象調用update方法可以使該對象變成持久化對象,如果對象是持久化對象時,那麼對該對象的任何修改,都會在送出事務時才會與之進行比較,如果不同,則發送一條update語句,否則就不會發送語句。

  3.離線對象就是,資料庫存在該對象,但是該對象又沒有被session所托管。

  分别測試了不同方式的插入操作, 以及更新和删除。具體看函數的實作。

  hibernate.cfg.xml中配置:

      <mapping class="com.blog.entriy.BlogGroup"/>

      <mapping class="com.blog.entriy.BlogMessage"/>

  如果整合了Spring:application.cfg.xml中的配置<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">