Hibernate的類型映射類型從總體上可以分為兩種:內(nèi)置類型映射和客戶類型映射。內(nèi)置類型映射負(fù)責(zé)把一些常見的java類型映射到sql類型:此外,Hibernate還允許用戶實(shí)現(xiàn)UserType或CompositeUserType接口,來靈活的制定客戶化映射類型??蛻纛愋陀成淇梢詫⒂脩舳x的java類映射到數(shù)據(jù)庫表的相應(yīng)字段。
內(nèi)置類型映射:
(1) Java基本類型的Hibernate映射:
表2.1列出了Hibernate中的映射類型和與其對(duì)應(yīng)的Java類型以及對(duì)應(yīng)的標(biāo)準(zhǔn)SQL類型和相應(yīng)的說明。
表2.1
Hibernate映射類型
|
Java類型
|
標(biāo)準(zhǔn)SQL類型
|
說明
|
integer或者int
|
int或者java.lang.Integer
|
INTEGER
|
4字節(jié)
|
long
|
long或者java.lang.Long
|
BIGINT
|
8字節(jié)
|
short
|
short或者java.lang.Short
|
SMALLINT
|
2字節(jié)
|
byte
|
byte或者java.lang.Byte
|
TINYINT
|
1字節(jié)
|
float
|
float或者java.lang.Float
|
FLOAT
|
4字節(jié),單精度浮點(diǎn)數(shù)
|
double
|
double或者java.lang.Double
|
DOUBLE
|
8字節(jié),雙精度浮點(diǎn)數(shù)
|
big_decimal
|
java.math.BigDecimal
|
NUMERIC
|
NUMERIC(8,2)表示共8位數(shù)字,其中兩位是小數(shù)
|
character
|
char或者java.lang.Character,java.lang.String
|
CHAR(1)
|
定長字符
|
string
|
java.lang.String
|
VARCHAR
|
變長字符
|
boolean
|
boolean或者java.lang.Boolean
|
BIT
|
布爾類型
|
yes_no
|
boolean或者java.lang.Boolean
|
CHAR(1)(‘Y’ 或者’N’)
|
布爾類型
|
true_false
|
boolean或者java.lang.Boolean
|
CHAR(1)(‘T’ 或者’F’)
|
布爾類型
|
2、Java時(shí)間和日期類型的Hibernate的類型映射:
在Java中,代表時(shí)間和日期的類型包括:java.util.Date 和 java.util.Calendar。此外在JDBC API中還提供了三個(gè)擴(kuò)展了java.util.Date類的子類:java.sql.Date 和 java.sql.Time 以及 java.sql.Timestamp,這三個(gè)類分別和標(biāo)準(zhǔn)sql類型中的DATE,TIME,TIMESTAMP相對(duì)應(yīng)。
表2.2列出了Hibernate中的映射類型和與其對(duì)應(yīng)的Java日期類型以及對(duì)應(yīng)的標(biāo)準(zhǔn)SQL類型和相應(yīng)的說明。
表2.2
映射類型
|
Java類型
|
標(biāo)準(zhǔn)SQL類型
|
說明
|
date
|
java.util.Date或者java.sql.Date
|
DATE
|
代表日期:形勢(shì)為YYYY-MM-DD
|
time
|
java.util.Date或者java.sql.Time
|
TIME
|
代表時(shí)間:形式為HH:MM:SS
|
timestamp
|
java.util.Calendar
|
TIMESTAMP
|
代表時(shí)間和日期,形式為YYYYMMDDHHMMSS
|
calendar
|
同上
|
同上
|
同上
|
calendar_date
|
java.util.Calendar
|
DATE
|
代表日期:形勢(shì)為YYYY-MM-DD
|
字段類型映射配置事例:
<property name=”name” column=”Name” type=”string”/>
<property name=”birthday” column=”Brithday” type=”date”/>
<property name=”registereddate” column=”Registereddate” type=”timestamp”/>
下圖為以上配置對(duì)應(yīng)的數(shù)據(jù)庫表:
Name varchar2(20)
Birthday DATE
Registereddate Timestamp
|
3、JDK自帶的個(gè)別Java類的Hibernate映射類型:
表2.3列出了個(gè)別Java類的Hibernate映射類型,與此對(duì)應(yīng)的標(biāo)準(zhǔn)SQL類型均為VARCHAR類型。
表2.3
映射類型
|
Java類型
|
標(biāo)準(zhǔn)SQL類型
|
class
|
java.lang.Class
|
VARCHAR
|
locale
|
java.util.Locale
|
VARCHAR
|
timezone
|
java.util.TimeZone
|
VARCHAR
|
currency
|
java.util.Currency
|
VARCHAR
|
|