Hibernate映射类型分为两种:内置的映射类型和客户化映射类型。内置映射类型负责把一些常见的Java类型映射到相应的SQL类型;此外,Hibernate还允许用户实现UserType或CompositeUserType接口,来灵活地定制客户化映射类型
1.内置映射类型
1).Java基本类型的Hibernate映射类型
Java类型 Hibernate映射类型 标准SQL类型 大小和取值范围
int/Integer int/integer INTEGER 4Byte
long/Long long BIGINT 8Byte
short/Short short SAMLLINT 2Byte
byte/Byte byte TINYINT 1Byte
float/Float float FLOAT 4Byte
double/Double double DOUBLE 8Byte
BigDecimal big_decimal NUMBERIC Numeric(8,2)
char/Character/String character CHAR(1) 定长字符
String string VARCHAR 变长字符
boolean/Boolean boolean BIT 布尔类型
boolean/Boolean yes/no CHAR(1)('Y'/'N') 布尔类型
boolean/Boolean true/false CHAR(1)('T'/'F') 布尔类型
2). Java时间和日期类型的Hibernate映射类型
Java类型 Hibernate映射类型 标准SQL类型 描述
java.util.Date/java.sql.Date date DATE 日期,yyyy-mm-dd
java.util.Date/java.sql.TIme time TIME 时间,hh:mm:ss
java.util.Date/java.sql.Timestamp timestamp TIMESTAMP 时间戳,yyyymmddhhmmss
java.util.Calendar calendar TIMESTAMP 同上
java.util.Calendar calendar_date DATE 日期,yyyy-mm-dd
* 当程序类型为java.sql.Timestamp, 数据库中表属性类型为timestamp的情况下,即使用户以空值插入数据,数据库系统仍然会自动填充timestamp的值
3). Java 大对象类型的Hibernate映射类型
Java类型 Hibernate映射类型 标准SQL类型 MySql类型 Oracle类型
byte[] binary VARBINARY/BLOB BLOB BLOB
String text CLOB TEXT CLOB
serializable 实现serializable接口的一个java类 VARBINARY/BLOB BLOB BLOB
java.sql.Clob clob CLOB TEXT CLOB
java.sql.Blob blob BLOB BLOB BLOB
* 在应用程序中通过Hibernate来保存java.sql.Clob或者java.sql.Blob实例时,必须包含两个步骤:
a. 在一个数据库事务中先保存一个空的Blob或Clob实例;b. 接着锁定这条记录,更新在步骤(1)中保存的Blob或Clob实例,把二进制数据或长文本数据写到Blob或Clob实例中。
1
2Session session = sessionFactory.openSession();
3Transaction tx = session.beginTransaction();
4Customer customer = new Customer();
5customer.setDescription(Hibernate.createClob("")); //先保存一个空的clob
6session.save(customer);
7session.flush();
8//锁定这条记录
9session.refresh(customer,LockMode.UPGRADE);
10oracle.sql.CLOB clob = (oracle.sql.CLOB) customer.getDescription();
11java.io.Writer pw = clob.getCharacterOutStream();
12pw.write(longText);//longText是一个长度超过255的字符串
13pw.close();
14tx.commit();
15session.close();
* 一个java类型对应多个Hibernate映射类型的场合。例如,如果持久化类的属性为java.util.Date类型,对应的Hibernate映射类型可以是date,time
或timestamp。此时必须根据对应的数据库表的字段的SQL类型,来确定Hibernate映射类型。如果字段为Date类型,则hibernate映射为datge,如果为TIME则为time,如果为TIMESTAMP则为timestamp。
Component映射
当对象中聚合了其他的对象的时候,就需要用到Component映射,映射方式在配置文件中添加类似下面的代码
<component name="email" class="onlyfun.caterpillar.Email">
<property name="address" type="string" column="ADDRESS" not-null="true"/>
</component>
其中email是被对象包含的对象,class后面是email的类路径< property ></ property >标签中声明了email类中的成员变量。
2. Set映射
当对象中包含了Set类型的数据的时候就需要用到Set映射,映射方式在配置文件中添加类似下面的代码
<set name="addrs" table="ADDRS">
<key column="USER_ID"/>
<element type="string" column="ADDRESS" not-null="true"/>
</set>
整个集合对象在数据库中是用一个表存储的,例如上面所举例子,在数据库中对应的表是ADDRS其中具有字段USER_ID和ADDRESS
3. List映射
当对象中包含了List类型的数据的时候就需要用到List映射,映射方式在配置文件中添加类似下面的代码
<list name="files" table="FILES">
<key column="USER_ID"/>
<index column="POSITION"/>
<element type="string" column="FILENAME" not-null="true"/>
</list>
配置文件中除了POSITION存储的是元素在list中的位置外,其他意思同Set映射中配置文件的意思相同,具体的不同点就是Set是一个无重复元素的集合而List可以具有重复元素。
4. Map映射
当对象中包含了Map类型的数据的时候就需要用到Map映射,映射方式在配置文件中添加类似下面的代码
<map name="files" table="FILES">
<key column="USER_ID"/>
<index column="DESCRIPTION" type="string"/>
<element type="string" column="FILENAME" not-null="true"/>
</map>
配置文件中除了DESCRIPTION存储的是元素在Map中的索引外,其他意思同Set和List映射中配置文件的意思相同。
分享到:
相关推荐
Hibernate 映射类型与Java 类型的对照表
hibernate与java类型映射
hibernate映射枚举类型,hibernate如何映射枚举类型
NULL 博文链接:https://chenyi-dt.iteye.com/blog/666611
Hibernate 映射类型与Java 类型、标准SQL对照
关于Hibernate的基本数据类型与Java中基本数据类型的映射关系
hibernate中使用自定义类型映射Oracle LONG类型
Hibernate数据类型映射表,介绍hibernate中各类型数据的关系!
2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射...
Hibernateg与各数据库数据类型的映射
Hibernate一对一数据关联 Hibernate下的多对多关系 Hibernate关系映射 Hibernate继承关系映射 Hibernate映射类型-主键生成器-核心API Hibernate3 插件Eclipse配置
2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射...
2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射...
2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射...
本人在厦门邦初培训时的快速入门精简文档 建立具有组成关系的域模型 建立粗粒度的关系模型 映射组成关系 区分值类型和实体类型
hibernate映射文件让你更自如的装换java中数据类型到数据库中数据类型,实现hibernate的映射,方便编码,节省应为数据类型带来的麻烦。
2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建...
2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建...
Hibernate中数据类型,涵盖了所有数据库的字段类型与Java基本类型间的映射关系