天天看點

Hibernate的核心對象關系映射

Hibernate的核心就是對象關系映射:

加載映射檔案的兩種方式:   第一種:<mapping resource="com/bie/lesson02/crud/po/employee.hbm.xml"/>   第二種://便于測試,會自動加載映射檔案:employee.hbm.xml        private static SessionFactory sf;           static{               //加載主配置檔案,并且建立session工廠              sf = new Configuration()                       .configure()                       .addClass(Employee.class)                       .buildSessionFactory();           }

  1:第一掌握映射檔案的書寫:

    <hibernate-mapping package="com.bie.po"> </hibernate-mapping>

  2:第二掌握如何映射某一個對象,以及class裡面主鍵和普通字段的設定。

    <class name="User" table="user"></class>

    2.1:主鍵映射

       2.1.1:單列主鍵映射

<generator class=""></generator>   主鍵映射:id             主鍵生成政策:                  identity:自增長(mysql,db2)                  native:自增長[會根據底層資料庫自增長的方式選擇identity或者sequence]                          如果是mysql資料庫,采用自增長的方式是identity                          如果是oracle資料庫,使用sequence序列的方式是先自增長                             sequence:自增長(序列),oracle中自增長是以序列方法實作                  increment:自增長,一般不用(會有并發通路的問題,一般在伺服器叢集環境使用會存在問題)                  assigned:指定主鍵生成政策為手動指定主鍵的值                  uuid:指定uuid随機生成全球唯一的值                      foreign:(外鍵的使用,one-to-one的時候使用)         

       2.1.2:多列作為主鍵映射

(1)如果找不到合适的列作為主鍵,除了用id列,我們一般使用聯合主鍵,即多列的值作為一個主鍵,進而保證記錄的唯一性。 (2)聯合主鍵的建立:    create table person2(         name VARCHAR(20),         age INT,         sex VARCHAR(5),         PRIMARY key(name,age)    )         
Hibernate的核心對象關系映射
(3)建立一個實體類存放兩個主鍵作為屬性,并且實作set和get,并且必須實作可序列化;    之後這個實體類和資料表中非兩個主鍵的字段構成一個新的實體類,并且實作set和get方法,    <class name="非兩個主鍵字段建立的實體類的類名">       <!-- 複合主鍵映射 -->            <composite-id name="兩個主鍵建立的實體類new的對象名稱">                  <key-property name="第一個主鍵的名稱" type="主鍵字段的類型"></key-property>                  <key-property name="第二個主鍵的名稱" type="主鍵字段的類型"></key-property>            </composite-id>     </class>           

    2.2:普通字段映射:property

              name:指定對象的屬性名稱;

              column:指定對象屬性對應的表的字段名稱,如果不寫預設與對象屬性一緻 ;    

              length:用于指定字元類型長度,比如字元串類型varchar(20),預設長度255;

              type:用于指定表的字段的類型,如果不指定,會比對屬性的類型,包含兩種類型;

                     java類型:必須寫全名,比如java.lang.String,java.util.Date

                     hibernate類型:比如string,date,都是小寫,不能寫String(不能首字母大寫)

      注意:property的column屬性的值不能是sql語句的關鍵字,比如desc關鍵字做描述的時候,如果非要使用,

            可以使用``(shift+~)反引号,不然就要改列名;

格力,掌握核心科技,讓消費者愛上中國造!!!

Hibernate,掌握映射核心知識,讓老闆給你升職加薪!!!~..~

 最後講解一下如何檢視Hibernate的api哦,很實用的哦~..~

Hibernate的核心對象關系映射