hibernate数据类型与OR映射
來(lái)源:http://blog.csdn.net/dyc87112/archive/2009/02/28/3945379.aspx
?
1、Hibernate 基本數(shù)據(jù)類(lèi)型
| Hibernate基本 類(lèi)型 | JAVA類(lèi)型 | 標(biāo)準(zhǔn)SQL字段類(lèi)型 |
| Boolean | Boolean,java.lang.boolean | BIT |
| Yes_no | Boolean,java.lang.boolean | Char(1)( ‘ Y ’ / ’ N ’ ) |
| True_false | Boolean,java.lang.boolean | Char(1)( ‘ Y ’ / ’ N ’ ) |
| Byte | Byte,java.lang.byte | TINYINT |
| Short | Short,java.lang.short | SMALLINT |
| Interger | Int,java.lang.integer | INTEGER |
| Long | Long,java.lang.long | BIGINT |
| Float | Float,java.lang.float | FLOAT |
| Double | Double,java.lang.Double | DOUBLE |
| Big_decimal | Java.math.BigDecimal | NUMBERIC |
| Character | Java.lang.string | CHAR(1) |
| String | Java.lang.string | VARCHAR |
| Date | Java.util.Date,java.sql.Date | DATE |
| Time | Java.util.Date,java.sql.Time | TIME |
| Timestamp | Java.util.Date,java.sql.TimeStamp | TIMESTAMP |
| Calender | Java.util.Calendar | TIMESTAMP |
| Calender_date | Java.util.Calendar | Date |
| Clob | Java.sql.clob | CLOB |
| Blob | Java.sql.blob | BLOB |
| Binary | Byte[] | VARBINARY,BLOB |
| Text | Java.lang.String | CLOB |
| Seralizable | Java.io.serializable | VARBINARY,BLOB |
| Class | Java.lang.class | VARCHAR |
| Local | Java.util.locale | VARCHAR |
| Timezone | Java.util.timezone | VARCHAR |
| Currency | Java.util.currency | VARCHAR |
?
?
2、OR映射
(1)id映射
< id column = "ID" name = "id" type = "java.lang.String" >
??? < generator class = "uuid.hex" />
</ id >
name:指定POJO 類(lèi)的成員變量名
type:name指定 變量的數(shù)據(jù)類(lèi)型
column:對(duì)應(yīng)數(shù)據(jù) 庫(kù)表的主鍵字段
?
(2)表/類(lèi)映射
< class name = "test.pojo.company" table = "company" lazy = "false" >
</ class >
name:指定POJO 類(lèi)
table:POJO類(lèi) 對(duì)應(yīng)的數(shù)據(jù)庫(kù)表
lazy:延遲加載
?
?
?
?
(3)實(shí)體映射
< hibernate-mapping >
??? < class name = "test.pojo.company" table = "company" >
?????? < id column = "ID" name = "id" type = "java.lang.String" >
?????????? < generator class = "uuid.hex" />
?????? </ id >
?????? < property column = "NAME" name = "name" type = "java.lang.String" />
?????? < property column = "ADDRESS" name = "address" type = "java.lang.String" />
??? </ class >
</ hibernate-mapping >
?
(4)復(fù)合主鍵映射
< composite-id >
< key-property column = "USERID" name = "userid" type = "java.lang.String" ></ key-property >
< key-property column = "WHEN" name = "when" type = "java.sql.Date" ></ key-property >
</ composite-id >
復(fù)合主鍵的POJO類(lèi)需 要實(shí)現(xiàn)equals和hashcode方法,可以使用apache commons lang包中的工具類(lèi)實(shí)現(xiàn)(commons-lang.jar)
?
?
3、generator 子元素,其class屬性指定主鍵生成方式:
increment(遞增) :用于為long, short或者int類(lèi)型生成唯一標(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類(lèi)型的。
sequence (序列) :在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的標(biāo)識(shí)符是long, short或者 int類(lèi)型的。
hilo (高低位) : 使 用一個(gè)高/低位算法來(lái)高效的生成long, short或者 int類(lèi)型的標(biāo)識(shí)符。給定一個(gè)表和字段(默認(rèn)分別是是hibernate_unique_key 和next_hi)作為高位值得來(lái)源。高/低位算法生成的標(biāo)識(shí)符只在一個(gè)特定的數(shù)據(jù)庫(kù)中是唯一的。在使用JTA獲得的連接或者用戶自行提供的連接中,不要 使用這種生成器。
seqhilo(使用序列的高低位) :使用一個(gè)高/低位算法來(lái)高效的生成long, short或者 int類(lèi)型的標(biāo)識(shí)符,給定一個(gè)數(shù)據(jù)庫(kù)序列(sequence)的名字。
uuid.hex :用一個(gè)128-bit的UUID算法生成字符串類(lèi)型的標(biāo)識(shí)符。在一個(gè)網(wǎng)絡(luò)中唯一(使用了IP地址)。UUID被編碼為一個(gè)32位16進(jìn)制數(shù)字的字符串。
uuid.string :使用同樣的UUID算法。UUID被編碼為一個(gè)16個(gè)字符長(zhǎng)的任意ASCII字符組成的字符串。不能使用在PostgreSQL數(shù)據(jù)庫(kù)中
native(本地) :根據(jù)底層數(shù)據(jù)庫(kù)的能力選擇identity, sequence 或者h(yuǎn)ilo中的一個(gè)。
assigned(程序設(shè)置) :讓?xiě)?yīng)用程序在save()之前為對(duì)象分配一個(gè)標(biāo)示符。
foreign(外部引用)
select :hibernate3中新增的。需要提供一個(gè)唯一的標(biāo)識(shí)字段進(jìn)行二次讀取,以獲取觸發(fā)器生成的主鍵值,通過(guò)param子元素進(jìn)行定義,比如:
< generator class = "select" >
??? < param name = "key" > key_field </ param >
</ generator >
該方法主要針對(duì)遺留系統(tǒng) 的改造工程,一些早期的系統(tǒng)主鍵依賴于觸發(fā)器生成。當(dāng)數(shù)據(jù)庫(kù)insert時(shí),觸發(fā)器捕獲這一操作,并為主鍵賦值,在插入數(shù)據(jù)庫(kù)后,再次讀取某一識(shí)別字段讀 取已經(jīng)插入的數(shù)據(jù),獲取其主鍵值。
總結(jié)
以上是生活随笔為你收集整理的hibernate数据类型与OR映射的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c# Winform Control 快
- 下一篇: 让svn外网访问