在我们学习Hibernate时就知道,Hibernate映射类型分为两种:Hibernate内置的映射类型和Hibernate客户化映射类型。
内置映射类型负责把一些常见的Java类型映射到相应的SQL类型;此外,Hibernate还允许用户实现UserType或CompositeUserType接口,来灵活地定制客户化映射类型
1.Hibernate内置映射类型
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实例中。
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
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.getCharacterOutStream();
pw.write(longText);//longText是一个长度超过255的字符串
pw.close();
tx.commit();
session.close();
一个java类型对应多个Hibernate映射类型的场合。例如,如果持久化类的属性为java.util.Date类型,对应的Hibernate映射类型可以是date,time
或timestamp。此时必须根据对应的数据库表的字段的SQL类型,来确定Hibernate映射类型。如果字段为Date类型,则hibernate映射为datge,如果为TIME则为time,如果为TIMESTAMP则为timestamp。
2.客户化映射类型
(很麻烦的一个东西,稍微看了看,日后需要再研究并总结)
分享到:
相关推荐
Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的关系型数据模型,从而简化了数据访问和操作的复杂性。 ### 一对一关联 一对一关联是数据库...
Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,需要添加相关的 jar 包...
在Hibernate中,组件映射通常通过以下几种方式进行: 1. **使用@Embeddable注解**:标记组件类为可嵌入的,告诉Hibernate这是一个可以被其他实体包含的组件。例如: ```java @Embeddable public class Address { ...
标题中的“Spring+Hibernate 自动映射”是指在Java Web开发中,利用Spring框架与Hibernate ORM工具进行数据层的整合,实现对象关系映射(ORM)的自动化处理。这一技术结合了Spring的强大依赖注入(DI)和事务管理...
1. Hibernate 是一种开源的持久层框架,提供了一个高效的数据访问机制,能够将 Java 对象与数据库表进行映射。 2. MyEclipse 是一个集成开发环境(IDE),提供了丰富的开发工具和插件,包括数据库管理、代码编辑、...
主要的关联类型有以下几种: 1. **一对一(One-to-One)关联**:一个实体对应另一个实体的唯一实例。在数据库中,通常通过主键外键来实现。例如,一个用户可能只有一个账户,那么User类和Account类之间就存在一对一...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
在本篇文章中,我们将深入探讨Hibernate中的几种关联映射,包括多对一(Many-to-One)、一对一(One-to-One)以及一对多(One-to-Many)映射。 首先,我们来看多对一(Many-to-One)的关联映射。这种映射关系通常...
在 Hibernate 中,为了处理对象模型中的继承关系,提供了以下几种继承策略: 1. **单表继承(Single Table Inheritance)**:所有子类共享同一张数据库表,使用一个标识字段来区分不同的子类实例。优点是简单,但...
除了`Set`之外,Hibernate还支持其他几种集合类型的映射,包括`List`、`Array`、`Map`、`Bag`等。 - **List**: 使用`<list>`标签来映射。类似于`Set`,但是保留了元素的插入顺序。 - **Array**: 通常情况下,数组不...
通过本文的介绍,我们不仅了解了Hibernate关系映射的基本概念和常用标签,还深入探讨了几种常见的关系类型及其映射方法。理解并熟练掌握这些知识将极大地帮助开发人员利用Hibernate进行高效的数据持久化操作。在未来...
在数据库设计中,一对多关系是一种常见的关联类型,意味着一个父实体可以有多个子实体,而每个子实体只能属于一个父实体。例如,一个学生可以对应多门课程,而一门课程只能被一个学生选修。 三、配置一对多映射 在...
在Java持久化框架Hibernate中,一对一(One-to-One)映射是对象关系映射的一种常见方式,用于表示两个实体之间一对一的关系。这种关系通常出现在一个实体的实例只能与另一个实体的单个实例相关联的情况。下面我们将...
标题"hibernate几种帮助文档"暗示了我们将要探讨的是关于Hibernate框架的不同类型的参考资料,包括可能的教程、API参考手册或使用指南。描述中提到的"Hibernate开发必用的包:annotation, Apachelog4j等, 包之间不...
Hibernate是一种强大的对象关系映射(ORM)框架,它允许开发者以面向对象的方式操作数据库。在实际应用中,经常会遇到需要将Java中的枚举类型映射到数据库的情况。枚举类型通常用于表示一组固定的选项,如性别、状态...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
Hibernate是一种开源的对象关系映射(Object-Relational Mapping,简称ORM)框架,它为Java应用提供了利用SQL与关系型数据库进行交互的方式。通过ORM,开发人员可以将面向对象的数据模型(如Java对象)与关系型...