您的位置:首页 > 其它

Hibernate 映射xml中的属性类型

2016-03-23 09:37 441 查看
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’)

布尔类型

 

 

1. <property name="author" type="java.lang.String">  

2.     <column name="author" length="20" not-null="true" />  

3. </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)    在一个数据库事务中先保存一个空的Blob或Clob实例

(2)    锁定记录,更新上一步保存的Bolb或Clob实例,把二进制数或长文本写进去,如:

[java] view plaincopy 
1. Customer customer=new Customer();  
2. customer.setDescription(Hibernate.createClob(“”));//保存一个空的Clob实例  
3. session.save(customer);  
4. session.flush();  
5. session.refresh(customer,LockMode.UPGRADE);//锁定记录  
6. oracle.sql.CLOB clob=(oracle.sql.CLOB)customer.getDescription();  
7. java.io.Writer pw=clob.getCharacterOutputStream();  
8. pw.write(longText);//lognText变量表示长度超过255的字符串  
9. pw.close();  
10. tx.commit();  
11. session.close();  
以上不用java.sql.Blob和java.sql.Clob处理JAVA大对有以下两个原因:

(1)    Blob和Clob实例只有在一个数据库事务中才有效

(2)    有些数据库的JDBC驱动程序不支持java.sql.Blob或java.sq.Clob。如果在Java应用中处理图片或长文件的二进制数用byte[]比java.sql.Blob方便;如果处理长度超过255的字符串java.lang.String比java.sql.Clob更方法

  JDK自带的个别JAVA类的Hibernate映射类型

映射类型

Java类型

标准SQL类型

class

java.lang.Class

VARCHAR

locale(现场)

java.util.Locale

VARCHAR

timezone(地区)

java.util.TimeZone

VARCHAR

currency(流通)

java.utilCurrency

VARCHAR

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: