国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
hibernate映射文件的配置

1. Doctype
所有的XML映射都需要定義如上所示的doctype。DTD可以從上述URL中獲取,也可以從hibernate-x.x.x/src/net/sf/hibernate目錄中、或hibernate.jar文件中找到。Hibernate總是會首先在它的classptah中搜索DTD文件。如果你發(fā)現(xiàn)它是通過連接Internet查找DTD文件,就對照你的classpath目錄檢查XML文件里的DTD聲明。
2. hibernate-mapping
這個元素包括一些可選的屬性。schema和catalog屬性,指明了這個映射所連接(refer)的表所在的schema和/或catalog名稱。假若指定了這個屬性,表名會加上所指定的schema和catalog的名字擴展為全限定名。假若沒有指定,表名就不會使用全限定名。default-cascade指定了未明確注明cascade屬性的Java屬性和集合類Hibernate會采取什么樣的默認級聯(lián)風(fēng)格。auto-import屬性默認讓我們在查詢語言中可以使用非全限定名的類名。

<hibernate-mapping
schema="schemaName" (1)
catalog="catalogName" (2)
default-cascade="cascade_style" (3)
default-access="field|property|ClassName" (4)
default-lazy="true|false" (5)
auto-import="true|false" (6)
package="package.name" (7)
/>
(1) schema (可選): 數(shù)據(jù)庫schema的名稱。

(2) catalog (可選): 數(shù)據(jù)庫catalog的名稱。

(3) default-cascade (可選 - 默認為 none): 默認的級聯(lián)風(fēng)格。

(4) default-access (可選 - 默認為 property): Hibernate用來訪問所有屬性的策略??梢酝ㄟ^實現(xiàn)PropertyAccessor接口 自定義。

(5) default-lazy (可選 - 默認為 true): 指定了未明確注明lazy屬性的Java屬性和集合類, Hibernate會采取什么樣的默認加載風(fēng)格。

(6) auto-import (可選 - 默認為 true): 指定我們是否可以在查詢語言中使用非全限定的類名(僅限于本映射文件中的類)。

(7) package (可選): 指定一個包前綴,如果在映射文檔中沒有指定全限定的類名,就使用這個作為包名。


5.1.3. class
你可以使用class元素來定義一個持久化類:

<class
name="ClassName" (1)
table="tableName" (2)
discriminator-value="discriminator_value" (3)
mutable="true|false" (4)
schema="owner" (5)
catalog="catalog" (6)
proxy="ProxyInterface" (7)
dynamic-update="true|false" (8)
dynamic-insert="true|false" (9)
select-before-update="true|false" (10)
polymorphism="implicit|explicit" (11)
where="arbitrary sql where condition" (12)
persister="PersisterClass" (13)
batch-size="N" (14)
optimistic-lock="none|version|dirty|all" (15)
lazy="true|false" (16)
entity-name="EntityName" (17)
check="arbitrary sql check condition" (18)
rowid="rowid" (19)
subselect="SQL expression" (20)
abstract="true|false" (21)
node="element-name"
/>
(1) name (可選): 持久化類(或者接口)的Java全限定名。如果這個屬性不存在,Hibernate將假定這是一個非POJO的實體映射。

(2) table (可選 - 默認是類的非全限定名): 對應(yīng)的數(shù)據(jù)庫表名。


(3) discriminator-value (可選 - 默認和類名一樣): 一個用于區(qū)分不同的子類的值,在多態(tài)行為時使用。它可以接受的值包括 null 和 not null。

(4) mutable (可選,默認值為true): 表明該類的實例是可變的或者不可變的。

(5) schema (可選): 覆蓋在根<hibernate-mapping>元素中指定的schema名字。

(6) catalog (可選): 覆蓋在根<hibernate-mapping>元素中指定的catalog名字。

(7) proxy (可選): 指定一個接口,在延遲裝載時作為代理使用。 你可以在這里使用該類自己的名字。

(8) dynamic-update (可選, 默認為 false): 指定用于UPDATE 的SQL將會在運行時動態(tài)生成,并且只更新那些改變過的字段。

(9) dynamic-insert (可選, 默認為 false): 指定用于INSERT的 SQL 將會在運行時動態(tài)生成,并且只包含那些非空值字段。

(10) select-before-update (可選, 默認為 false):指定Hibernate除非確定對象真正被修改了(如果該值為true-譯注),否則不會執(zhí)行SQLUPDATE操作。在特定場合(實際上,它只在一個瞬時對象(transientobject)關(guān)聯(lián)到一個新的session中時執(zhí)行的update()中生效),這說明Hibernate會在UPDATE之前執(zhí)行一次額外的SQL SELECT操作,來決定是否應(yīng)該執(zhí)行 UPDATE。

(11) polymorphism(多態(tài)) (可選, 默認值為 implicit (隱式) ): 界定是隱式還是顯式的使用多態(tài)查詢(這只在Hibernate的具體表繼承策略中用到-譯注)。

(12) where (可選) 指定一個附加的SQLWHERE 條件, 在抓取這個類的對象時會一直增加這個條件。

(13) persister (可選): 指定一個定制的ClassPersister。

(14) batch-size (可選,默認是1) 指定一個用于根據(jù)標(biāo)識符(identifier)抓取實例時使用的"batch size"(批次抓取數(shù)量)。

(15) optimistic-lock(樂觀鎖定) (可選,默認是version): 決定樂觀鎖定的策略。

(16) lazy (可選): 通過設(shè)置lazy="false", 所有的延遲加載(Lazy fetching)功能將被全部禁用(disabled)。


(17) entity-name (可選,默認為類名): Hibernate3允許一個類進行多次映射(前提是映射到不同的表),并且允許使用Maps或XML代替Java層次的實體映射(也就是實現(xiàn)動態(tài)領(lǐng)域模型,不用寫持久化類-譯注)。

(18) check (可選): 這是一個SQL表達式,用于為自動生成的schema添加多行(multi-row)約束檢查。

(19) rowid (可選): Hibernate可以使用數(shù)據(jù)庫支持的所謂的ROWIDs,例如:Oracle數(shù)據(jù)庫,如果你設(shè)置這個可選的rowid,Hibernate可以使用額外的字段rowid實現(xiàn)快速更新。ROWID是這個功能實現(xiàn)的重點,它代表了一個存儲元組(tuple)的物理位置。

(20) subselect (可選): 它將一個不可變(immutable)并且只讀的實體映射到一個數(shù)據(jù)庫的子查詢中。當(dāng)你想用視圖代替一張基本表的時候,這是有用的,但最好不要這樣做。更多的介紹請看下面內(nèi)容。

(21) abstract (可選): 用于在<union-subclass>的繼承結(jié)構(gòu)(hierarchies)中標(biāo)識抽象超類。

5.1.4. id
被映射的類必須定義對應(yīng)數(shù)據(jù)庫表主鍵字段。大多數(shù)類有一個JavaBeans風(fēng)格的屬性,為每一個實例包含唯一的標(biāo)識。<id> 元素定義了該屬性到數(shù)據(jù)庫表主鍵字段的映射。

<id
name="propertyName" (1)
type="typename" (2)
column="column_name" (3)
unsaved-value="null|any|none|undefined|id_value" (4)
access="field|property|ClassName" (5)

length="L" (6)

<generator class="generatorClass"/>
</id>
(1) name (可選): 標(biāo)識屬性的名字。

(2) type (可選): 標(biāo)識Hibernate類型的名字。(如果沒配置,hibernate將會自動轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)庫類型)

(3) column (可選 - 默認為屬性名): 主鍵字段的名字。

(4) unsaved-value (可選 - 默認為一個切合實際(sensible)的值):一個特定的標(biāo)識屬性值,用來標(biāo)志該實例是剛剛創(chuàng)建的,尚未保存。這可以把這種實例和從以前的session中裝載過(可能又做過修改--譯者注)但未再次持久化的實例區(qū)分開來。

(5) access (可選 - 默認為property): Hibernate用來訪問屬性值的策略。

(6)length="L"指定長度

 

8. Generator
可選的<generator>子元素是一個Java類的名字,用來為該持久化類的實例生成唯一的標(biāo)識。如果這個生成器實例需要某些配置值或者初始化參數(shù),用<param>元素來傳遞。

<id name="id" type="long" column="cat_id">
<generator class="org.hibernate.id.TableHiLoGenerator">
<param name="table">uid_table</param>
<param name="column">next_hi_value_column</param>
</generator>
</id>
所有的生成器都實現(xiàn)org.hibernate.id.IdentifierGenerator接口。這是一個非常簡單的接口;某些應(yīng)用程序可以選擇提供他們自己特定的實現(xiàn)。當(dāng)然, Hibernate提供了很多內(nèi)置的實現(xiàn)。

下面是一些內(nèi)置生成器的快捷名字:


increment
用于為long, short或者int類型生成唯一標(biāo)識。只有在沒有其他進程往同一張表中插入數(shù)據(jù)時才能使用。在集群下不要使用。


identity
對DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的內(nèi)置標(biāo)識字段提供支持。返回的標(biāo)識符是long, short 或者int類型的。


sequence
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的標(biāo)識符是long, short或者 int類型的。


hilo
使用一個高/低位算法高效的生成long, short 或者 int類型的標(biāo)識符。給定一個表和字段(默認分別是 hibernate_unique_key 和next_hi)作為高位值的來源。高/低位算法生成的標(biāo)識符只在一個特定的數(shù)據(jù)庫中是唯一的。


seqhilo
使用一個高/低位算法來高效的生成long, short 或者 int類型的標(biāo)識符,給定一個數(shù)據(jù)庫序列(sequence)的名字。


uuid
用一個128-bit的UUID算法生成字符串類型的標(biāo)識符,這在一個網(wǎng)絡(luò)中是唯一的(使用了IP地址)。UUID被編碼為一個32位16進制數(shù)字的字符串。


guid
在MS SQL Server 和 MySQL 中使用數(shù)據(jù)庫生成的GUID字符串。


native
根據(jù)底層數(shù)據(jù)庫的能力選擇identity, sequence 或者hilo中的一個。


assigned
讓應(yīng)用程序在save()之前為對象分配一個標(biāo)示符。這是 <generator>元素沒有指定時的默認生成策略。手動分配主鍵的時候要設(shè)置成它


select
通過數(shù)據(jù)庫觸發(fā)器選擇一些唯一主鍵的行并返回主鍵值來分配一個主鍵。


foreign
使用另外一個相關(guān)聯(lián)的對象的標(biāo)識符。通常和<one-to-one>聯(lián)合起來使用。

9. property
<property>元素為類定義了一個持久化的,JavaBean風(fēng)格的屬性。

<property
name="propertyName" (1)
column="column_name" (2)
type="typename" (3)
update="true|false" (4)
insert="true|false" (4)
formula="arbitrary SQL expression" (5)
access="field|property|ClassName" (6)
lazy="true|false" (7)
unique="true|false" (8)
not-null="true|false" (9)
optimistic-lock="true|false" (10)
generated="never|insert|always" (11)
node="element-name|@attribute-name|element/@attribute|."

index="index_name"
unique_key="unique_key_id"
length="L"
precision="P"
scale="S"
/>
(1) name: 屬性的名字,以小寫字母開頭。

(2) column (可選 - 默認為屬性名字): 對應(yīng)的數(shù)據(jù)庫字段名。也可以通過嵌套的<column>元素指定。

(3) type (可選): 一個Hibernate類型的名字。


(4) update, insert (可選 - 默認為 true) : 表明用于UPDATE 和/或 INSERT的SQL語句中是否包含這個被映射了的字段。這二者如果都設(shè)置為false則表明這是一個“外源性(derived)”的屬性,它的值來源于映射到同一個(或多個)字段的某些其他屬性,或者通過一個trigger(觸發(fā)器)或其他程序生成。

(5) formula (可選): 一個SQL表達式,定義了這個計算(computed)屬性的值。計算屬性沒有和它對應(yīng)的數(shù)據(jù)庫字段。

(6) access (可選 - 默認值為 property): Hibernate用來訪問屬性值的策略。

(7) lazy (可選 - 默認為 false): 指定指定實例變量第一次被訪問時,這個屬性是否延遲抓?。╢etched lazily)( 需要運行時字節(jié)碼增強)。

(8) unique (可選): 使用DDL為該字段添加唯一的約束。 同樣,允許它作為property-ref引用的目標(biāo)。

(9) not-null (可選): 使用DDL為該字段添加可否為空(nullability)的約束。

(10) optimistic-lock (可選 - 默認為 true): 指定這個屬性在做更新時是否需要獲得樂觀鎖定(optimistic lock)。換句話說,它決定這個屬性發(fā)生臟數(shù)據(jù)時版本(version)的值是否增長。

(11) generated (可選 - 默認為 never): 表明此屬性值是否實際上是由數(shù)據(jù)庫生成的。

typename可以是如下幾種:

Hibernate基本類型名(比如:integer, string, character,date, timestamp, float, binary, serializable, object, blob)。
一個Java類的名字,這個類屬于一種默認基礎(chǔ)類型 (比如: int, float,char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob)。
一個可以序列化的Java類的名字。
一個自定義類型的類的名字。(比如: com.illflow.type.MyCustomType)。

基本值類型(Hibernate內(nèi)建立自己的類型,從java轉(zhuǎn)化成數(shù)據(jù)庫類型)

string
從java.lang.String 到 VARCHAR (或者 Oracle的 VARCHAR2)的映射。
date, time, timestamp
從java.util.Date和其子類到SQL類型DATE, TIME 和TIMESTAMP (或等價類型)的映射。
calendar, calendar_date
從java.util.Calendar 到SQL 類型TIMESTAMP和 DATE(或等價類型)的映射。
big_decimal, big_integer
從java.math.BigDecimal和java.math.BigInteger到NUMERIC (或者 Oracle 的NUMBER類型)的映射。
locale, timezone, currency
從java.util.Locale, java.util.TimeZone 和java.util.Currency 到VARCHAR (或者Oracle 的VARCHAR2類型)的映射. Locale和 Currency的實例被映射為它們的ISO代碼。TimeZone的實例被影射為它的ID。
class
從java.lang.Class 到 VARCHAR (或者 Oracle 的VARCHAR2類型)的映射。Class被映射為它的全限定名。
binary
把字節(jié)數(shù)組(byte arrays)映射為對應(yīng)的 SQL二進制類型。
text
把長Java字符串映射為SQL的CLOB或者TEXT類型。
serializable
把可序列化的Java類型映射到對應(yīng)的SQL二進制類型。你也可以為一個并非默認為基本類型的可序列化Java類或者接口指定Hibernate類型serializable。
clob, blob
JDBC 類 java.sql.Clob 和 java.sql.Blob的映射。某些程序可能不適合使用這個類型,因為blob和clob對象可能在一個事務(wù)之外是無法重用的。(而且, 驅(qū)動程序?qū)@種類型的支持充滿著補丁和前后矛盾。)


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hibernate的Property解析
精通Hibernate
11.1 Hibernate的內(nèi)置映射類型
Hibernate3.2 .1參考文檔
使用HIBERNATE的SQL查詢并將結(jié)果集自動轉(zhuǎn)換成POJO
Hibernate操作時間需要注意的問題(轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服