九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
hibernate映射文件的配置

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

<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ù)庫(kù)schema的名稱。

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

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

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

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

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

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


5.1.3. class
你可以使用class元素來(lái)定義一個(gè)持久化類:

<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全限定名。如果這個(gè)屬性不存在,Hibernate將假定這是一個(gè)非POJO的實(shí)體映射。

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


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

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

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

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

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

(8) dynamic-update (可選, 默認(rèn)為 false): 指定用于UPDATE 的SQL將會(huì)在運(yùn)行時(shí)動(dòng)態(tài)生成,并且只更新那些改變過(guò)的字段。

(9) dynamic-insert (可選, 默認(rèn)為 false): 指定用于INSERT的 SQL 將會(huì)在運(yùn)行時(shí)動(dòng)態(tài)生成,并且只包含那些非空值字段。

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

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

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

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

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

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

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


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

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

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

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

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

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

<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)識(shí)屬性的名字。

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

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

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

(5) access (可選 - 默認(rèn)為property): Hibernate用來(lái)訪問(wèn)屬性值的策略。

(6)length="L"指定長(zhǎng)度

 

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

<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>
所有的生成器都實(shí)現(xiàn)org.hibernate.id.IdentifierGenerator接口。這是一個(gè)非常簡(jiǎn)單的接口;某些應(yīng)用程序可以選擇提供他們自己特定的實(shí)現(xiàn)。當(dāng)然, Hibernate提供了很多內(nèi)置的實(shí)現(xiàn)。

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


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


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


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


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


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


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


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


native
根據(jù)底層數(shù)據(jù)庫(kù)的能力選擇identity, sequence 或者h(yuǎn)ilo中的一個(gè)。


assigned
讓?xiě)?yīng)用程序在save()之前為對(duì)象分配一個(gè)標(biāo)示符。這是 <generator>元素沒(méi)有指定時(shí)的默認(rèn)生成策略。手動(dòng)分配主鍵的時(shí)候要設(shè)置成它


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


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

9. property
<property>元素為類定義了一個(gè)持久化的,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: 屬性的名字,以小寫(xiě)字母開(kāi)頭。

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

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


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

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

(6) access (可選 - 默認(rèn)值為 property): Hibernate用來(lái)訪問(wèn)屬性值的策略。

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

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

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

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

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

typename可以是如下幾種:

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

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

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


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

聯(lián)系客服