Hibernate 映射xml中的属性类型
2012-12-25 00:14 eoeAndroid社区 阅读(340) 评论(0) 编辑 收藏 举报Hibernate的内置映射类型
1 JAVA基本类型(包括它们的包装类)和Hibernate映射类型
Hibernate |
Java类型 |
标准SQL类型 |
大小和取值范围 |
integer/int |
int/java.lang.Integer |
integer |
4字节,-2^31~2^31-1 |
long |
long/java.lang.Long |
bigint |
8字节, -2^63~2^63-1 |
short |
short/java.lang.Short |
smallint |
2字节, -2^15~2^15-1 |
byte |
byte/java.lang.Byte |
tinyint |
1字节, -128~127 |
flat |
float/java.lang.Float |
float |
4字节, |
double |
double/java.lang.Double |
double |
8字节, 双精度浮点数 |
big_decimal |
java.math.BigDecimal |
numeric |
用法:numeric(8,2) |
character |
char/…Character/…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’) |
布尔类型 |
<property name="author" type="java.lang.String"> <column name="author" length="20" not-null="true" /> </property>
2 JAVA时间和日期类型的Hibernate映射类型
映射类型 |
java类型 |
标准SQL类型 |
描述 |
date |
java.util.Date/java.sql.Date |
date |
日期,形式:yyyy-mm-dd |
time |
java.util.Date/java.sql.Time |
time |
时间,形式:hh:mm:ss |
timestamp |
…Date/java.sql.Timestamp |
timestamp |
形式:yyyymmddhhmmss |
calendar |
java.util.Calendar |
timestamp |
时间和日期,形式同上 |
calendar_date |
java.util.Calendar |
date |
日期,形式:yyyy-mm-dd |
在标准SQL中,DATE表示日期(2005-01-09),TIME表示时间(11:46:54),TIMESTAMP表示时间戳,包含日期和时间信息(20050109114654),如果没有显式插入,由系统自动添加当前系统时间
3 Java大对象类型的Hibernate映射类型
映射类型 |
Java类型 |
标准SQL类型 |
描述 |
binary |
byte[] |
varbinary/blob |
存放二进制数 |
text |
java.lang.String |
clob |
字符串大对象 |
serializable |
实现java.io.Serializable接口的类 |
varbinary/blob |
|
clob |
java.sql.Clob |
clob |
字符串大对象 |
bolb |
java.sql.Blob |
blob |
二进制大对象 |
MySQL不支持标准SQL的CLOB类型。
通过Hibernate来保存java.sql.Clob或java.sql.Blob实例时,发须包含两个步骤:
(1)
(2)
- Customer customer=new Customer();
- customer.setDescription(Hibernate.createClob(“”));//保存一个空的Clob实例
- session.save(customer);
- session.flush();
- session.refresh(customer,LockMode.UPGRADE);//锁定记录
- oracle.sql.CLOB clob=(oracle.sql.CLOB)customer.getDescription();
- java.io.Writer pw=clob.getCharacterOutputStream();
- pw.write(longText);//lognText变量表示长度超过255的字符串
- pw.close();
- tx.commit();
- session.close();
以上不用java.sql.Blob和java.sql.Clob处理JAVA大对有以下两个原因:
(1)
(2)
JDK自带的个别JAVA类的Hibernate映射类型
映射类型 |
Java类型 |
标准SQL类型 |
class |
java.lang.Class |
VARCHAR |
locale(现场) |
java.util.Locale |
VARCHAR |
timezone(地区) |
java.util.TimeZone |
VARCHAR |
currency(流通) |
java.utilCurrency |
VARCHAR |