Hibernate的基本映射数据类型是Java基本类型与标准SQL类型相互转换的桥梁,其关系如图4-7所示。
通过Hibernate的基本映射数据类型可以非常方便地将数据从一种形式转换成另一种形式,完成高质量的ORM任务。例如:
表4-4列出了这3种数据类型之间的对应关系。
表4-4 3种数据类型之间的对应关系
Hibernate映射类型 | Java类型 | 标准SQL类型 |
integer | java.lang.Integer | INTEGER |
long | java.lang.Long | BIGINT |
short | java.lang.Short | SMALLINT |
float | java.lang.Float | FLOAT |
double | java.lang.Double | DOUBLE |
big_decimal | java.math.BigDecimal | NUMERIC |
character | java.lang.String | CHAR(1) |
string | java.lang.String | VARCHAR |
byte | byte或java.lang.Byte | TINYINT |
boolean | boolean或java.lang.Boolean | BIT |
(续表)
Hibernate映射类型 | Java类型 | 标准SQL类型 |
yes_no | boolean或java.lang.Boolean | CHAR(1)('Y'或'N') |
true_false | boolean或java.lang.Boolean | CHAR(1)('Y'或'N') |
date | java.util.Date或java.sql.Date | DATE |
time | java.util.Date或java.sql.Time | TIME |
timestamp | java.util.Date或java.sql.Timestamp | TIMESTAMP |
calendar | java.util.Calendar | TIMESTAMP |
calendar_date | java.util.Calendar | DATE |
binary | byte[] | VARBINARY或BLOB |
text | java.lang.String | CLOB |
serializable | java.io.Serializable实例 | VARBINARY或BLOB |
clob | java.sql.Clob | CLOB |
blob | java.sql.Blob | BLOB |
class | java.lang.Class | VARCHAR |
locale | java.util.Locale | VARCHAR |
timezone | java.util.TimeZone | VARCHAR |
currency | java.util.Currency | VARCHAR |
下面我们用实例演示上述映射数据类型的用法。
假如在MySQL数据库中有一张关系表datamap,如表4-5所示。
表4-5 datamap数据表
字 段 名 称 | 数 据 类 型 | 主 键 | 自 增 | 允 许 为 空 | 描 述 |
ID | int(4) | 是 | 增1 |
| ID号 |
MYBOOLEAN | bit(1) |
|
| √ | 逻辑型数据 |
MYINT | int(5) |
|
| √ | 整型数据 |
MYLONG | bigint(11) |
|
| √ | 长整型数据 |
MYFLOAT | float(8,2) |
|
| √ | 单精度浮点型数据 |
MYDOUBLE | double(10,2) |
|
| √ | 双精度浮点型数据 |
MYDECIMAL | decimal(10,2) |
|
| √ | DECIMAL型数据 |
MYSTRING | varchar(100) |
|
| √ | 字符串数据 |
MYTEXT | text |
|
| √ | Text型数据 |
MYDATE | date |
|
| √ | Date型数据 |
MYTIME | time |
|
| √ | Time型数据 |
MYDATETIME | datetime |
|
| √ | Datetime型数据 |
MYTIMESTAMP | timestamp |
|
| √ | Timestamp型数据 |
MYBINARY | varbinary(10240) |
|
| √ | Binary型数据 |
MYBLOB | longblob |
|
| √ | Blob型数据 |
参考地址: