<meta>元素的屬性 屬性 描述 class-description 指定描述類的javaDoc field-description 指定描述類的屬性javaDoc interface 如果為true,表明生成接口而非類,預設false implements 指定類所實作的接口 extends 指定繼承的父類名 generated-class 重新指定生成的類名 scope-class 指定類的修飾符,預設public scope-set 指定set方法的修飾符,預設public scope-get 指定get方法的修飾符,預設public scope-field 指定類的屬性的修飾符,預設private use-in-toString 如果為true,表示在toString()方法中包含此屬性 gen-property 如果為false,不會在java類中生成此屬性,預設true finder-method 指定find方法名 <column>元素屬性 name 設定字段名字 length 設定字段長度 not-null 如為true,指名該字段不允許為null,預設false unique 如為true,指名該字段具有唯一限制,預設false index 給一個或多個字段建立索引 unique-key 為多個字段設定唯一限制 foreign-key 為外鍵限制命名,在<many-to-many><one-to-one><key><many-to-one>元素中包含 foreign-key屬性,在雙向關聯中,inverse屬性為true的一端不能設定foreign-key sql-type 設定字段sql類型 check 設定sql檢查限制 用于控制insert or update 語句的映射屬性 <property>元素的insert屬性 如為false,在insert中不包含該字段,預設為true <property>元素的update屬性 如為false,在update中不包含該字段,預設為true <class>元素的mutable屬性 如為false,等價于所有字段的update屬性為false,預設為true <property>元素的dunameic-insert屬性 如為true,表明動态生成insert語句,隻有不為null,才會包含insert語句中,預設false <property>元素的dunameic-update屬性 如為true,表明動态生成update語句,隻有不為null,才會包含insert語句中,預設false <class>元素的dunameic-insert屬性 如為true,表明等價于所有字段動态生成insert語句,隻有不為null,才會包含insert語句中 ,預設false <class>元素的dunameic-update屬性 如為true,表明等價于所有字段動态生成update語句,隻有不為null,才會包含insert語句中 ,預設false Hibernate提供的内置辨別符生成器 increment 适用于代理主鍵,自動遞增,增1(隻能是long,int,short) identity 适用于代理主鍵,底層資料庫自動增長字段類型(資料庫需支援,隻能是long,int,short) (oralce)sequence 适用于代理主鍵,根據底層資料庫的序列來生成辨別符(資料庫支援序列,隻能是long,int,short) hilo 适用于代理主鍵,根據high/low算法來生成.Hibernate把特定表的字段作為high值,在預設情況下選用hibernate_unique_key表的next_hi字段 (mysql,mssql)native 适用于代理主鍵,根據資料庫自動生成辨別符支援能力,來選擇identity,sequence,hilo uuid.hex 适用于代理主鍵,采用128位UUID(universal unique identification)算法來生成辨別.此算法能在網絡環境中生成唯一的字元串辨別符, (不建議使用,字元串類型比整形類型的主鍵占用更多的空間) assigned 适用于自然主鍵,由java程式負責生成. <hibernate-mapping> <class name="項目路徑" table="庫中對應表名" schema="dbo" catalog="netoa"> <meta attribute="class-description">指定描述類的javaDoc</meta> <meta attribute="class-scope">指名類的修飾類型</meta> <meta attribute="extends">指定繼承類</meta> <id name="bgrkbh" type="long"> <column name="BGRKBH" precision="15" scale="0" sql-type="庫中類型" check="BGRKBH>10"/> <meta attribute="scope-set">指定類,類屬性的getxxx(),setxxx()方法的修飾符 包括:static,final,abstract,public,protected,private </meta> <generator class="assigned" /> </id> <property name="Class.fileName" type="long"> <column name="YSLX" precision="精度" scale="刻度" not-null="預設false" sql-type="資料庫中類型"/> 附加屬性不會影響Hibernate的運作行為 <meta attribute="field-description">指定描述類的javaDoc</meta> 指定描述類屬性的javaDoc </property> </class> </hibernate-mapping> 注意: 1 Session的commit()和flush()方法的差別,flush()方法進行清理緩存的操作,執行一系列的SQL語句,但不會送出事務; commit()方法會先調用flush(),然後送出事務.送出事務意味着對資料庫所作的更新被永久儲存下來. 2 Session的setFlushMode()方法用于設定清理緩存的時間點.FlushMode類定義了三種不同的清理模式 清理緩存的模式 Session的查詢方法 Session的commit()方法 Session的flush()方法 FlushMode.AUTO 清理 清理 清理 FlushMode.COMMIT 不清理 清理 清理 FlushMode.NEVER 不清理 不清理 清理 3 Hibernate應用中java對象的狀态 臨時狀态 (transient):剛剛用new語句建立,還沒被持久化,不處與Session的緩存中,處于臨時狀态的java對象被稱為臨時對象. 持久化狀态(persistent):已經被持久化,加入session的緩存中.處于持久化狀态的java對象被稱為持久化對象. 遊離狀态(detached):已經被持久化,但不在處于session的緩存中.處于遊離狀态的java對象被稱為遊離對象. (注意:::::)持久化類與持久化對象是不同的概念.持久化類的執行個體可以處于臨時狀态,持久化狀态和遊離狀态.其中處于 持久化狀态的執行個體 被稱為持久化狀态. 臨時對象的特性: 1 不處于緩存中,也可以說,不被任何一個Session執行個體關聯 2 在資料中沒有對應的紀錄. 在此情況下,java對象進入臨時狀态 1 當通過new建立一個對象時,此時不和資料庫中的任何紀錄的 ex:對象的狀态轉化過程 程式代碼 對象的生命周期 對象的狀态 tx=session.beginTransaction(); Object obj=new Object("tow",new HashSet()); 開始生命周期 臨時狀态 session.save(obj); 處于生命周期 轉化為持久狀态 Long id=obj.getId(); obj=null; Object obj2=(Object)session.load(Object.class,id); 處于生命周期 處于持久化狀态 tx.commit(); session.close(); 處于生命周期 轉變成遊離狀态 System.out.print(obj2.getName()); 處于生命周期 處于遊離狀态 obj2=null; 結束生命周期 結束生命周期 4 cascade屬性 cascade屬性值 描述 none 在儲存更新時,忽略其他關聯對象,他是cascade預設屬性 save-update 當通過Session的save(),update()以及saveOrUpdate()方法來儲存 或更新目前對象時,及聯儲存所有關聯的建立的臨時對象,并且及聯更新所有關聯的遊離對象 delete 當通過session的delete()方法删除目前對象時,及聯删除所有對象 all 包含save-update及delete行為,此外對目前對象執行evict()或lock ()操作時,也會對所有關聯的持久化對象執行evict()或lock()操作 delete-orphan 删除所有和目前對象解除關聯關系的對象 all-delete-orphan 包含all和delete-orphan 5 Hibernate映射類型,對應的java基本類型及對應的标準SQL類型 Hibernate 映射類型 java類型 标準SQL類型 integer或者int int INTEGER long long BIGINT short short SMALLINT byte byte TINYINT float float FLOAT double double DOUBLE big_decimal java.math.BigDecimal NUMERIC character char and string CHAR string string VARCHAR boolean boolean BIT Hibernate映射類型,對應的java時間和日期類型及對應的标準SQL類型 映射類型 java類型 标準SQL類型 描述 date java.util.Date或者java.sql.Date DATE 代表日期,YYYY-MM-DD time java.util.Date或者java.sql.Date TIME 代表時間,形式為HH:MM:SS timestamp java.util.Date或者java.sql.Timestamp TIMESTAMP 代表日期和時間,YYYYMMDDHHMMSS calendar java.util.Calendar TIMESTAMP 同上 calendar_date java.util.Calendar DATE 代表日期,YYYY-MM-DD |