新聞中心
在我們學習Hibernate時就知道,Hibernate映射類型分為兩種:Hibernate內置的映射類型和Hibernate客戶化映射類型。

為郟縣等地區(qū)用戶提供了全套網頁設計制作服務,及郟縣網站建設行業(yè)解決方案。主營業(yè)務為網站制作、成都網站制作、郟縣網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
內置映射類型負責把一些常見的Java類型映射到相應的SQL類型;此外,Hibernate還允許用戶實現UserType或CompositeUserType接口,來靈活地定制客戶化映射類型
1.Hibernate內置映射類型
1).Java基本類型的Hibernate映射類型
|
Java類型 |
Hibernate映射類型 |
標準SQL類型 |
大小和取值范圍 |
|
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) |
定長字符 |
|
String |
string |
VARCHAR |
變長字符 |
|
boolean/Boolean |
boolean |
BIT |
布爾類型 |
|
boolean/Boolean |
yes/no |
CHAR(1)('Y'/'N') |
布爾類型 |
|
boolean/Boolean |
true/false |
CHAR(1)('T'/'F') |
布爾類型 |
2). Java時間和日期類型的Hibernate映射類型
|
Java類型 |
Hibernate映射類型 |
標準SQL類型 |
描述 |
|
java.util.Date/java.sql.Date |
date |
DATE |
日期,yyyy-mm-dd |
|
java.util.Date/java.sql.TIme |
time |
TIME |
時間,hh:mm:ss |
|
java.util.Date/java.sql.Timestamp |
timestamp |
TIMESTAMP |
時間戳,yyyymmddhhmmss |
|
java.util.Calendar |
calendar |
TIMESTAMP |
同上 |
|
java.util.Calendar |
calendar_date |
DATE |
日期yyyy-mm-dd |
當程序類型為java.sql.Timestamp, 數據庫中表屬性類型為timestamp的情況下,即使用戶以空值插入數據,數據庫系統(tǒng)仍然會自動填充timestamp的值
3). Java 大對象類型的Hibernate映射類型
|
Java類型 |
Hibernate映射類型 |
標準SQL類型 |
MySql類型 |
Oracle類型 |
|
byte[] |
binary |
VARBINARY/BLOB |
BLOB |
BLOB |
|
String |
text |
CLOB |
TEXT |
CLOB |
|
serializable |
實現serializable接口的一個java類 |
VARBINARY/BLOB |
BLOB |
BLOB |
|
java.sql.Clob |
clob |
CLOB |
TEXT |
CLOB |
|
java.sql.Blob |
blob |
BLOB |
BLOB |
BLOB |
在應用程序中通過Hibernate來保存java.sql.Clob或者java.sql.Blob實例時,必須包含兩個步驟:
a. 在一個數據庫事務中先保存一個空的Blob或Clob實例;
b. 接著鎖定這條記錄,更新在步驟(1)中保存的Blob或Clob實例,把二進制數據或長文本數據寫到Blob或Clob實例中。
- 1
- 2Session session = sessionFactory.openSession();
- 3Transaction tx = session.beginTransaction();
- 4Customer customer = new Customer();
- 5customer.setDescription(Hibernate.createClob("")); //先保存一個空的clob
- 6session.save(customer);
- 7session.flush();
- 8//鎖定這條記錄
- 9session.refresh(customer,LockMode.UPGRADE);
- 10oracle.sql.CLOB clob = (oracle.sql.CLOB) customer.getDescription();
- 11java.io.Writer pw = clob.getCharacterOutStream();
- 12pw.write(longText);//longText是一個長度超過255的字符串
- 13pw.close();
- 14tx.commit();
- 15session.close();
一個java類型對應多個Hibernate映射類型的場合。例如,如果持久化類的屬性為java.util.Date類型,對應的Hibernate映射類型可以是date,time
或timestamp。此時必須根據對應的數據庫表的字段的SQL類型,來確定Hibernate映射類型。如果字段為Date類型,則hibernate映射為datge,如果為TIME則為time,如果為TIMESTAMP則為timestamp。
2.客戶化映射類型
(很麻煩的一個東西,稍微看了看,日后需要再研究并總結)
【編輯推薦】
- 簡述Hibernate中加載并存儲對象
- Hibernate傳播性持久化攻略
- 深入了解Hibernate自動狀態(tài)檢測
- 教你如何在Hibernate中實例化集合和代理
- Hinerbate單端關聯代理頗析
當前名稱:簡述Hibernate幾種映射類型
鏈接分享:http://fisionsoft.com.cn/article/djdhocj.html


咨詢
建站咨詢
