hibernate簡介(Session,幾種狀態,方法······等)

來源:互聯網
上載者:User

標籤:

  • 1.Hibernate是什麼?

             Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。

      對象關係映射簡稱ORM(Object Relational Mapping),由於我們目前使用的程式設計語言大都是物件導向的編程,使用的資料庫也大多都是關係型資料庫,資料得以對象的形式在程式中使用,並且程式中 的有些對象(資料對象)得永久儲存在資料庫中,故就出現了ORM,說得更通俗點:ORM就是將資料庫中的資料和程式中的對象進行互相的轉換!

      如今的ORM架構可以說是很豐富的:

    • Hibernate,開源 ORM 架構,廣泛使用(使用最廣泛)
    • iBATIS,開源,由ASF維護,並且有 .NET移植(使用的也較廣泛)
    • TopLink,由Oracle開發
    • Cayenne,Apache,java 開源
    • QuickDB ORM,開源 ORM 架構 (GNU LGPL)
    • Java Data Objects (JDO)
    • Java Persistence API (JPA)
    • JPOX,開源 JDO 2 參考實現
    • Object Relational Bridge (Apache OJB),一個Java的對象關係映射器
    • OpenJPA,Apache,開源,支援 JPA API
    2.Hibernate跟jdbc的關係

     

           Hibernate封裝JDBC,持久化記憶體中的對象,同步到資料庫 .

               1.關於封裝,我得強調兩點:

     

        (1).把儘可能多的東西藏起來.對外提供簡捷的介面.

        (2)把所有的屬性藏起來

            當然我們,我們如果能夠做到單一原則就更好了

            2.關於持久化的概念

             持久化定義:將程式資料在持久狀態和瞬時狀態間轉換的機制。

               這裡講的是Hibernate的話得講一下中的幾種狀態:瞬時狀態,持久狀態,脫管狀態

    1. 瞬時狀態(Transient):指一個對象在記憶體中開闢空間.如 User user=new User();此時user對象就是瞬時狀態的.
    2. 持久狀態(Persistent):資料(如記憶體中的對象)儲存到可永久儲存的存放裝置中(如磁碟)。可以以檔案,資料庫以及xml等形式.
    3. 脫管狀態(Detached):當與某持久對象關聯的session被關閉後,該持久對象轉變為脫管對象。當脫管對象被重新關聯到session上時,並再次轉變成持久對象。  

     這裡我想總結一點關於瞬時狀態和持久狀態:瞬時態就是存在於記憶體中的,如果電腦關了後,再啟動,之前在記憶體中的對象已經不在了,如果持久狀態的話,儲存在磁碟上的資料對象,當需要時還是可以載入到記憶體中,不會因電腦的啟動而受到影響!

     

    3.Session

     Session介面是Hibernate向程式提供操縱資料庫的最主要介面,

  • 瞬時狀態(Transient):沒與session關聯
  • 持久狀態(Persistent):與session關聯,沒close
  • 脫管狀態(Detached):當session.close後

 

4.Session的方法詳解

1.儲存 

          svae:立即插入資料庫,並且返回主鍵

          persist:不立即(延遲)插入資料庫,無傳回值

2.擷取

             load:載入對象後,對對象的改動不會立即重新整理到db,必須flush到db

                       ex: User user=session.load(User.class,2);

                                user.setName(‘gt‘);

                                user.flush();   (消極式載入)

             get:載入對象後,對對象的改動立即重新整理到db

3.更新

           update:持久化對象,更新

     saveOrUpdate:包含save()和update()功能,如果傳入的參數是臨時對象(沒有儲存過)就調用save()方法;如果傳入的參數是游離對象,就調用update()方法

           merge:不會持久化對象,只會把託管對象的修改更新到db

4.刪除

          delete:從資料庫中刪除與JAVA對象對應的記錄

 

5.清理

           flush:把緩衝同步到db

           clear:清除session的緩衝大小(更新批量時,應考慮)

 

5.映射關係

    詳見部落格內單獨介紹的文章

 

hibernate簡介(Session,幾種狀態,方法······等)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.