Hibernate映射类型分为两种:内置映射类型和客户化映射类型。内置映射类型负责把一些常见的Java类型映射到相应的SQL类型;此外,Hibernate还允许用户实现UserType或CompositeUserType接口,来灵活地定制客户化映射类型。客户化类型能够把用户定义的Java类型映射到数据库表的相应字段。
一、Hibernate的内置映射类型
1、Java基本类型的Hibernate映射类型
Hibernate映射类型 |
Java类型 |
标准SQL类型 |
大小和取值范围 |
integer或者int |
int或者java.lang.Integer |
INTEGER |
4字节 |
long |
long Long |
BIGINT |
8字节 |
short |
short Short |
SMALLINT |
2字节 |
byte |
byte Byte |
TINYINT |
1字节 |
float |
float Float |
FLOAT |
4字节 |
double |
double Double |
DOUBLE |
8字节 |
big_decimal |
java.math.BigDecimal |
NUMERIC |
NUMERIC(8,2)8位 |
character |
char Character String |
CHAR(1) |
定长字符 |
string |
String |
VARCHAR |
变长字符串 |
boolean |
boolean Boolean |
BIT |
布尔类型 |
yes_no |
boolean Boolean |
CHAR(1) (Y-N) |
布尔类型 |
true_false |
boolean Boolean |
CHAR(1) (T-F) |
布尔类型 |
2、Java时间和日期类型的Hibernate映射
映射类型 |
Java类型 |
标准SQL类型 |
描述 |
date |
util.Date或者sql.Date |
DATE |
YYYY-MM-DD |
time |
Date Time |
TIME |
HH:MM:SS |
timestamp |
Date Timestamp |
TIMESTAMP |
YYYYMMDDHHMMSS |
calendar |
calendar |
TIMESTAMP |
YYYYMMDDHHMMSS |
calendar_date |
calendar |
DATE |
YYYY-MM-DD |
3、Java大对象类型的Hibernate映射类型
映射类型 |
Java类型 |
标准SQL类型 |
MySQL类型 |
Oracle类型 |
binary |
byte[] |
VARBINARY(或BLOB) |
BLOB |
BLOB |
text |
String |
CLOB |
TEXT |
CLOB |
serializable |
Serializable接口任意实现类 |
VARBINARY(或BLOB) |
BLOB |
BLOB |
clob |
java.sql.Clob |
CLOB |
TEXT |
CLOB |
blob |
java.sql.Blob |
BLOB |
BLOB |
BLOB |
在程序中通过Hibernate来保存java.sql.Clob或者java.sql.Blob实例时,必须包含两个步骤:
l 在一个数据库事务中先保存一个空的Blob或Clob实例。
l 接着锁定这条记录,更新上面保存的Blob或Clob实例,把二进制数据或文本数据写到Blob或Clob实例中。
4、JDK自带的个别Java类的Hibernate映射类型(略)
5、使用Hibernate内置映射类型
二、客户化映射类型(略)