日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hibernate数据类型与OR映射

發(fā)布時(shí)間:2023/12/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate数据类型与OR映射 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。