日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
簡(jiǎn)述Hibernate幾種映射類(lèi)型

在我們學(xué)習(xí)Hibernate時(shí)就知道,Hibernate映射類(lèi)型分為兩種:Hibernate內(nèi)置的映射類(lèi)型和Hibernate客戶化映射類(lèi)型。

為郟縣等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及郟縣網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站制作、郟縣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

內(nèi)置映射類(lèi)型負(fù)責(zé)把一些常見(jiàn)的Java類(lèi)型映射到相應(yīng)的SQL類(lèi)型;此外,Hibernate還允許用戶實(shí)現(xiàn)UserType或CompositeUserType接口,來(lái)靈活地定制客戶化映射類(lèi)型

1.Hibernate內(nèi)置映射類(lèi)型

1).Java基本類(lèi)型的Hibernate映射類(lèi)型

Java類(lèi)型

Hibernate映射類(lèi)型

標(biāo)準(zhǔn)SQL類(lèi)型

大小和取值范圍

int/Integer

int/integer

INTEGER

4Byte

long/Long   

long

BIGINT

8Byte

short/Short

short

SAMLLINT

2Byte

byte/Byte

byte

TINYINT

1Byte

float/Float

float

FLOAT

4Byte

double/Double

double

DOUBLE

8Byte

BigDecimal

big_decimal

NUMBERIC

Numeric(8,2)

char/Character/String

character

CHAR(1)

定長(zhǎng)字符

String

string

VARCHAR

變長(zhǎng)字符

boolean/Boolean

boolean

BIT

布爾類(lèi)型

boolean/Boolean

yes/no

CHAR(1)('Y'/'N')

布爾類(lèi)型

boolean/Boolean

true/false

CHAR(1)('T'/'F')

布爾類(lèi)型

2). Java時(shí)間和日期類(lèi)型的Hibernate映射類(lèi)型

Java類(lèi)型

Hibernate映射類(lèi)型

標(biāo)準(zhǔn)SQL類(lèi)型

描述

java.util.Date/java.sql.Date

date

DATE

日期,yyyy-mm-dd

java.util.Date/java.sql.TIme

time

TIME

時(shí)間,hh:mm:ss

java.util.Date/java.sql.Timestamp

timestamp

TIMESTAMP

時(shí)間戳,yyyymmddhhmmss

java.util.Calendar

calendar

TIMESTAMP

同上

java.util.Calendar

calendar_date

DATE

日期yyyy-mm-dd

當(dāng)程序類(lèi)型為java.sql.Timestamp, 數(shù)據(jù)庫(kù)中表屬性類(lèi)型為timestamp的情況下,即使用戶以空值插入數(shù)據(jù),數(shù)據(jù)庫(kù)系統(tǒng)仍然會(huì)自動(dòng)填充timestamp的值

3). Java 大對(duì)象類(lèi)型的Hibernate映射類(lèi)型

Java類(lèi)型

Hibernate映射類(lèi)型

標(biāo)準(zhǔn)SQL類(lèi)型

MySql類(lèi)型

Oracle類(lèi)型

byte[]

binary

VARBINARY/BLOB

BLOB

BLOB

String

text

CLOB

TEXT

CLOB

serializable

實(shí)現(xiàn)serializable接口的一個(gè)java類(lèi)

VARBINARY/BLOB

BLOB

BLOB

java.sql.Clob

clob

CLOB

TEXT

CLOB

java.sql.Blob

blob

BLOB

BLOB

BLOB

在應(yīng)用程序中通過(guò)Hibernate來(lái)保存java.sql.Clob或者java.sql.Blob實(shí)例時(shí),必須包含兩個(gè)步驟:
a. 在一個(gè)數(shù)據(jù)庫(kù)事務(wù)中先保存一個(gè)空的Blob或Clob實(shí)例;

b. 接著鎖定這條記錄,更新在步驟(1)中保存的Blob或Clob實(shí)例,把二進(jìn)制數(shù)據(jù)或長(zhǎng)文本數(shù)據(jù)寫(xiě)到Blob或Clob實(shí)例中。

 
 
 
  1.  1  
  2.  2Session session = sessionFactory.openSession();  
  3.  3Transaction tx = session.beginTransaction();  
  4.  4Customer customer = new Customer();  
  5.  5customer.setDescription(Hibernate.createClob("")); //先保存一個(gè)空的clob  
  6.  6session.save(customer);  
  7.  7session.flush();  
  8.  8//鎖定這條記錄  
  9.  9session.refresh(customer,LockMode.UPGRADE);  
  10. 10oracle.sql.CLOB clob = (oracle.sql.CLOB) customer.getDescription();  
  11. 11java.io.Writer pw = clob.getCharacterOutStream();  
  12. 12pw.write(longText);//longText是一個(gè)長(zhǎng)度超過(guò)255的字符串  
  13. 13pw.close();  
  14. 14tx.commit();  
  15. 15session.close(); 

一個(gè)java類(lèi)型對(duì)應(yīng)多個(gè)Hibernate映射類(lèi)型的場(chǎng)合。例如,如果持久化類(lèi)的屬性為java.util.Date類(lèi)型,對(duì)應(yīng)的Hibernate映射類(lèi)型可以是date,time
或timestamp。此時(shí)必須根據(jù)對(duì)應(yīng)的數(shù)據(jù)庫(kù)表的字段的SQL類(lèi)型,來(lái)確定Hibernate映射類(lèi)型。如果字段為Date類(lèi)型,則hibernate映射為datge,如果為T(mén)IME則為time,如果為T(mén)IMESTAMP則為timestamp。

2.客戶化映射類(lèi)型

(很麻煩的一個(gè)東西,稍微看了看,日后需要再研究并總結(jié))

【編輯推薦】

  1. 簡(jiǎn)述Hibernate中加載并存儲(chǔ)對(duì)象
  2. Hibernate傳播性持久化攻略
  3. 深入了解Hibernate自動(dòng)狀態(tài)檢測(cè)
  4. 教你如何在Hibernate中實(shí)例化集合和代理
  5. Hinerbate單端關(guān)聯(lián)代理頗析

本文名稱(chēng):簡(jiǎn)述Hibernate幾種映射類(lèi)型
URL網(wǎng)址:http://www.dlmjj.cn/article/djdhocj.html