Java數據類型,Hibernate數據類型,標準sql數據類型之間的對應表

Java數據類型 Hibernate數據類型 標準SQL數據類型
(PS:對於不同的DB可能有所差異)
byte、java.lang.Byte byte TINYINT
short、java.lang.Short short SMALLINT
int、java.lang.Integer integer INGEGER
long、java.lang.Long long BIGINT
float、java.lang.Float float FLOAT
double、java.lang.Double double DOUBLE
java.math.BigDecimal big_decimal NUMERIC
char、java.lang.Character character CHAR(1)
boolean、java.lang.Boolean boolean BIT
java.lang.String string VARCHAR
boolean、java.lang.Boolean yes_no CHAR(1)('Y'或'N')
boolean、java.lang.Boolean true_false CHAR(1)('Y'或'N')
java.util.Date、java.sql.Date date DATE
java.util.Date、java.sql.Time time TIME
java.util.Date、java.sql.Timestamp timestamp TIMESTAMP
java.util.Calendar calendar TIMESTAMP
java.util.Calendar calendar_date DATE
byte[] binary VARBINARY、BLOB
java.lang.String text CLOB
java.io.Serializable serializable VARBINARY、BLOB
java.sql.Clob clob CLOB
java.sql.Blob blob BLOB
java.lang.Class class VARCHAR
java.util.Locale locale VARCHAR
java.util.TimeZone timezone VARCHAR
java.util.Currency currency VARCHAR

PS:映射 Java 的時間, 日期類型
1). 兩個基礎知識:
I. 在 Java 中, 代表時間和日期的類型包括: java.util.Date 和 java.util.Calendar. 
此外, 在 JDBC API 中還提供了 3 個擴展了 java.util.Date 類的子類: java.sql.Date, java.sql.Time 
和 java.sql.Timestamp, 這三個類分別和標準 SQL 類型中的 DATE, TIME 和 TIMESTAMP 類型對應
II. 在標準 SQL 中, DATE 類型表示日期, TIME 類型表示時間, TIMESTAMP 類型表示時間戳, 同時包含日期和時間信息. 
2). 如何進行映射 ?
I. 因爲 java.util.Date 是 java.sql.Date, java.sql.Time 和 java.sql.Timestamp 的父類, 所以 java.util.Date
可以對應標準 SQL 類型中的 DATE, TIME 和 TIMESTAMP
II. 基於 I, 所以在設置持久化類的 Date 類型是, 設置爲 java.util.Date. 
III. 如何把 java.util.Date 映射爲 DATE, TIME 和 TIMESTAMP ?
可以通過 property 的 type 屬性來進行映射: 
例如:

<property name="date" type="timestamp">
    <column name="DATE" />
</property>
<property name="date" type="data">
    <column name="DATE" />
</property>
<property name="date" type="time">
    <column name="DATE" />
</property>
其中 timestamp, date, time 既不是 Java 類型, 也不是標準 SQL 類型, 而是 hibernate 映射類型. 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章