[原創]java WEB學習筆記81:Hibernate學習之路--- 對象關係對應檔(.hbm.xml):hibernate-mapping 節點,class節點,id節點(主鍵建置原則),property節點

來源:互聯網
上載者:User

標籤:

本部落格的目的:①總結自己的學習過程,相當於學習筆記 ②將自己的經驗分享給大家,相互學習,互相交流,不可商用內容難免出現問題,歡迎指正,交流,探討,可以留言,也可以通過以下方式聯絡。本人互連網技術愛好者,互連網技術發燒友微博:伊直都在0221QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.POJO 類和資料庫的對應檔 *.hbm.xml    hibernate mapping  

  1)POJO 類和關聯式資料庫之間的映射可以用一個XML文檔來定義。

    2)通過 POJO 類的資料庫對應檔,Hibernate可以理解持久化類資料表之間的對應關係,也可以理解持久化類屬性資料庫表列之間的對應關係,如何映射主鍵,如何映射關聯關係

  3)在運行時 Hibernate 將根據這個對應檔來產生各種 SQL 陳述式

  4)對應檔的副檔名為 .hbm.xml

 

2.對應檔說明

    hibernate-mapping

      類層次:class

         主鍵:id

         基本類型:property

           實體引用類: many-to-one | one-to-one

           集合:set | list | map | array

            one-to-many

             many-to-many

          子類:subclass | joined-subclass

          其它:component | any 等

        查詢語句:query(用來放置查詢語句,便於對資料庫查詢的統一管理和最佳化)

每個Hibernate-mapping中可以同時定義多個類. 但更推薦為每個類都建立一個單獨的對應檔

 

3.詳細介紹參數

  1)hibernate-mapping 節點

      

 

 

  2)class節點

               

 

  3)id 節點

    ① Hibernate 使用物件識別碼(OID) 來建立記憶體中的對象資料庫表中記錄的對應關係. 對象的 OID 和資料表的主鍵對應. Hibernate 通過標識符產生器來為主鍵賦值

   ② Hibernate 推薦在資料表中使用代理主鍵, 即不具備業務含義的欄位. 代理主鍵通常為整數類型, 因為整數類型比字串類型要節省更多的資料庫空間.

   ③ 在對象-關係對應檔中, <id> 元素用來設定物件識別碼. <generator> 子項目用來設定標識符產生器.

   ④ Hibernate 提供了標識符產生器介面: IdentifierGenerator, 並提供了各種內建實現

 

                 

      

                

1.increment 標識符產生器由 Hibernate遞增的方式為代理主鍵賦值
  ① Hibernate 會先讀取 NEWS 表中的主鍵的最大值, 而接下來向 NEWS 表中插入記錄時, 就在 max(id) 的基礎上遞增, 增量為 1.  ② 適用範圍:測試    > 由於 increment 生存標識符機制不依賴於底層資料庫系統, 因此它適合所有的資料庫系統    > 適用於只有單個 Hibernate 應用進程訪問同一個資料庫的場合, 在叢集環境下不推薦使用它    > OID 必須為 long, int 或 short 類型, 如果把 OID 定義為 byte 類型, 在運行時會拋出異常2.identity 標識符產生器  
  ① identity 標識符產生器由底層資料庫來負責產生標識符, 它要求底層資料庫把主鍵定義為自動成長欄位類型  ② 適用範圍: 適合db2/meysql 不適合 oracle   > 由於 identity 產生標識符的機制依賴於底層資料庫系統, 因此, 要求底層資料庫系統必須支援自動成長欄位類型. 支援自動成長欄位類型的資料庫包括: DB2, Mysql, MSSQLServer, Sybase 等    > OID 必須為 long, int 或 short 類型, 如果把 OID 定義為 byte 類型, 在運行時會拋出異常

3.sequence 標識符產生器
  
  ① sequence 標識符產生器利用底層資料庫提供的序列來產生標識符.
  ② Hibernate 在持久化一個 News 對象時, 先從底層資料庫的 news_seq 序列中獲得一個唯一的標識號, 再把它作為主索引值
  ③ 適用範圍: 底層資料庫支援序列的 orclae/db2 ,不適合 mysql
    > 由於 sequence 產生標識符的機制依賴於底層資料庫系統的序列, 因此, 要求底層資料庫系統必須支援序列. 支援序列的資料庫包括: DB2, Oracle 等
   > OID 必須為 long, int 或 short 類型, 如果把 OID 定義為 byte 類型, 在運行時會拋出異常

4.hilo 標識符產生器
  
  ① hilo 標識符產生器由 Hibernate 按照一種 high/low 演算法*產生標識符, 它從資料庫的特定表的欄位中擷取 high 值.
  ② Hibernate 在持久化一個 News 對象時, 由 Hibernate 負責產生主索引值. hilo 標識符產生器在產生標識符時, 需要讀取並修改 HI_TABLE 表中的 NEXT_VALUE 值.
  ③ 適用範圍:適用於所有資料,不依賴底層資料庫
    > 由於 hilo 生存標識符機制不依賴於底層資料庫系統, 因此它適合所有的資料庫系統
    > OID 必須為 long, int 或 short 類型, 如果把 OID 定義為 byte 類型, 在運行時會拋出異常

5.native 標識符產生器

  ① native 標識符產生器依據底層資料庫對自動產生標識符的支援能力, 來選擇使用 identity, sequence 或 hilo 標識符產生器.

  ② 適用範圍: 首選這種方式

    > 由於 native 能根據底層資料庫系統的類型, 自動選擇合適的標識符產生器, 因此很適合於跨資料庫平台開發

    > OID 必須為 long, int 或 short 類型, 如果把 OID 定義為 byte 類型, 在運行時會拋出異常

 

 

  

  4)property節點

    

  

    

  

         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

[原創]java WEB學習筆記81:Hibernate學習之路--- 對象關係對應檔(.hbm.xml):hibernate-mapping 節點,class節點,id節點(主鍵建置原則),property節點

聯繫我們

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