<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
本文轉自yunlielai51CTO部落格,原文連結:http://blog.51cto.com/4925054/1117724,如需轉載請自行聯系原作者