內置的
basic mapping types
可以大致地分類爲:
integer, long, short, float, double, character, byte, boolean, yes_no, true_false
這些類型都對應 Java 的原始類型或者其封裝類,來符合(特定廠商的)SQL 字段類
型。
boolean, yes_no
和
true_false
都是 Java 中
boolean
或者
java.lang.Boolean
的另外
說法。
string
從
java.lang.String
到
VARCHAR
(或者 Oracle 的
VARCHAR2
)的映射。
date, time, timestamp
從
java.util.Date
和其子類到 SQL 類型
DATE
,
TIME
和
TIMESTAMP
(或等價類型)的映射。
calendar, calendar_date
從
java.util.Calendar
到 SQL 類型
TIMESTAMP
和
DATE
(或等價類型)的映射。
big_decimal, big_integer
從
java.math.BigDecimal
和
java.math.BigInteger
到
NUMERIC
(或者 Oracle 的
NUMBER
類型)
的映射。
locale, timezone, currency
從
java.util.Locale
,
java.util.TimeZone
和
java.util.Currency
到
VARCHAR
(或者 Oracle 的
VARCHAR2
類型)的映射。
Locale
和
Currency
的實例被映射爲它們的 ISO 代碼。
TimeZone
的
實例被影射爲它的
ID
。
class
從
java.lang.Class
到
VARCHAR
(或者 Oracle 的
VARCHAR2
類型)的映射。
Class
被映射爲
它的全限定名。
binary
把字節數組(byte arrays)映射爲對應的 SQL 二進制類型。
text
把長 Java 字符串映射爲 SQL 的
CLOB
或者
TEXT
類型。
serializable
把可序列化的 Java 類型映射到對應的 SQL 二進制類型。你也可以爲一個並非默認爲基本類
型的可序列化 Java 類或者接口指定 Hibernate 類型
serializable
。
自定義值類型
93
clob, blob
JDBC 類
java.sql.Clob
和
java.sql.Blob
的映射。某些程序可能不適合使用這個類型,因爲
blob 和 clob 對象可能在一個事務之外是無法重用的。(而且, 驅動程序對這種類型的支持
充滿着補丁和前後矛盾。)
imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary
一般來說,映射類型被假定爲是可變的 Java 類型,只有對不可變 Java 類
型,Hibernate 會採取特定的優化措施,應用程序會把這些對象作爲不可變對象處理。比
如,你不應該對作爲
imm_timestamp
映射的 Date 執行
Date.setTime()
。要改變屬性的值,並
且保存這一改變,應用程序必須對這一屬性重新設置一個新的(不一樣的)對象。
實體及其集合的唯一標識可以是除了
binary
、
blob
和
clob
之外的任何基礎類型。(聯合標識也
是允許的,後面會說到。)
在
org.hibernate.Hibernate
中,定義了基礎類型對應的
Type
常量。比如,
Hibernate.STRING
代
表
string
類型。