Hibernate的映射类型分为两种,内置映射类型和客户化映射类型。
内置映射类型:负责把一些常见的java类型映射到相应的SQL类型
客户化映射类型:Hibernate允许用户实现UserType或CompositeUserType接口,来灵活定制客户化映射类型。客户化映射类型能够把用户定义的Java类型映射到数据库表的相应字段。
1、Hibernate内置的映射类型
1.1 Java基本的类型的Hibernate映射
int或integer——INTEGER
long——BIGINT
short——SMALLINT
byte——TINYINT
float——FLOAT
double——DOUBLE
big_decimal——NUMBERIC
character——CHAR
string——VARCHAR
boolean——BIT
1.2 Java时间和日期类型的Hibernate映射类型
date——DATE
time——TIME
timestamp——TIMESTAMP
calender—— TIMESTAMP
calender_date——DATE
1.2 Java大对象类型的Hibernate映射类型
binary——BLOB(Mysql)、BLOB(Oracle)
text——TEXT(Mysql)、CLOB(Oracle)
serializable——TEXT(Mysql)、CLOB(Oracle)
blob——BLOB(Mysql)、BLOB(Oracle)
假定Customer类的description属性为Java.sql.Clob类型,在Oracle数据库中的CUSTOMERS表的DESCRIPTION字段为CLOB类型,Customer.hbm.xml如下:
<property name="description" type="clob" column="DESCRIPTION" />
在应用程序中通过Hibernate来保存java.sql.Clob或java.sql.Blob实例时,必须包含两个步骤:
1.在数据库事务中先保存一个空的Clob或者Blob实例
2.接着锁定这条记录,更新步骤1中保存的Blob或Clob实例,把二进制数据或文本数据写到Blob或Clob实例中。例如:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
customer = new Customer();
customer.setDescription(Hibernate.createClob