Hibernate的内置映射类型通常使用和Java类型相同的名字,它能够把 Java基
本类型、Java 时间和日期类型、Java大对象类型及JDK中常用Java类型映射到相
应的标准SQL类型。
1 Java基本类型的Hibernate映射类型
2 Java时间和日期类型的Hibernate映射类型
在 Java 中,代表时间和日期的类型包括:java.uitl.Date 和java.util.Calendar。
此外,在 JDBC API 中还提供了 3 个扩展了java.uitl.Date类的子类:java.sql.Date、
java.sql.Time和java.sql.Timestamp,这3个类分别和标准SQL类型中的DATE、TIME
和 TIMESTAMP类型对应。
3 Java大对象类型的Hibernate映射类型
在 Java 中,java.lang.String 可用于表示长字符串 (长度超过 255),字节数组
byte[]可用于存放图片或长文件的二进制数据。此外,在 JDBC API 中还提供了
java.sql.Clob和java.sql.Blob类型,它们分别和标准 SQL 中的 CLOB和 BLOB 类型
应。CLOB表示字符串大对象 (Character Large Object),BLOB表示二进制大对
象 (Binary Large Object)。表 9-3 列出了 Hibernate 映射类型、对应的 Java大对象
4 IDK自带的个别Java类的Hibernate映射类型
5 使用Hibernate内置映射类型
Hibernate 的内置映射类型、Java类型和标准 SQL 类型三者之间的关系是固定
的。如图 9-1 所示,Monkey类的 id属性为 java.lang.Long,而 MONKEYS 表的 ID
字段为 BIGINT类型,那么应该用 Hibernate 的 long类型来映射它们;Monkey类的
name属性为 java.lang.String,而 MONKEYS 表的 NAME字段为 VARCHAR类型,
那么应该用 Hibernate 的 string类型来映射。
由于 Hibernate 的内置映射类型、Java类型和标准 SQL类型三者之间的关系是
固定的,因此在映射持久化类的属性时,有时可以省略设置 Hibernate 映射类型,
例如以下两种方式是等价的:
< property name=”name” type=”string” column=’ iNA ME” />
或者:
< property name=”name” column=”NAME” />
如果没有指定映射类型,Hibernate会运用反射机制,先判别 Monkey类的 name
属性的 Java类型,然后采用与此 Java类型对应的默认 Hibernate映射类型。例如与
java.lang.String类型对应的默认 Hibernate 映射类型为“string”。
但是,在一个 Java类型对应多个 Hibernate 映射类型的场合,有时必须显式指
定 Hibernate 映射类型。例如,如果持久化类的一个属性为 java.util.Date 类型,对
应的 Hibernate 映射类型可以是 date、time 或 timestamp。此时必须根据对应的数据
库表的字段的 SQL类型,来确定 Hibernate 映射类型。如果字段为 DATE类型,那
么 Hibernate 映射类型为 date;如果字段为 TIME类型,那么 Hibernate 映射类型为
time;如果字段为 TIMESTAMP类型,那么 Hibernate 映射类型为 timestamp。
Monkey类的 phone属性为 java.lang.Integer,而对应的奉的 PHONE
字段为 VARCHAR类型,那么应该用 Hibernate 的什么类型来映射呢?下面的两种
映射方式都是不正确的:
< proper ty name= ,’ phone ,, type–” integer ” column= ,, PHONE” / >
或者:
< property name=”phone” type=” string” column=”PHONE” />
当 Hibernate 持久化 Monkey 对象,无法自动把java.lang.Integer 类型的 phone
属性转换为字符串类型,因此会抛出 ClassCastException。在下一节,将介绍如何
利用 Hibernate 的客户化映射类型,把持久化类的任意类型的属性映射到数据库中。
分享到:
相关推荐
Hibernate内置了二级缓存,可提高性能。一级缓存是Session级别的,每个Session有自己的缓存;二级缓存则是SessionFactory级别的,可以跨Session共享数据。 综上所述,"Hibernate实体映射"的学习资源涵盖了从基本...
在开发Java应用,尤其是涉及到数据库交互的时候,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而MyEclipse作为一款集成开发环境,提供了对Hibernate的全面支持,包括自动生成...
标题:“Hibernate的映射文件配置” 描述:本文深入解析了Hibernate映射文件配置的核心概念,重点阐述了映射文件的基本结构及其组成部分,包括主键(id)、普通属性(property)等关键元素的配置方法和策略。 ### ...
本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和使用。 首先,主键(Primary Key)是数据库表中用于唯一标识一条记录的字段,其值在表中必须是唯一的,并且通常不...
【XDoclet 与Hibernate 映射】 XDoclet 是一款强大的Java注解处理工具,它允许开发者在Java源代码中添加元数据,这些元数据可以用来自动生成各种配置文件,包括Hibernate的映射文件(hbm.xml)。这种方式极大地提高...
1. **hibernate3.jar**:这是Hibernate的核心库,包括ORM(对象关系映射)引擎、查询语言HQL(Hibernate Query Language)、Criteria API等。它提供了将Java对象映射到数据库表的能力,并允许执行复杂的查询操作。 ...
Hibernate 有很多优点,它可以帮助开发者快速地访问和操作数据库。下面是 Hibernate 的一些优点: * 简洁高效:Hibernate 提供了一种简洁高效的方式来访问和操作数据库。 * 支持多种数据库管理系统:Hibernate 支持...
3. **类型转换**: Hibernate提供了一些内置的类型转换器,如`@Type`注解,用于处理自定义类型的字段。 4. **继承映射**: Hibernate支持单表继承、联合继承和表 per 类继承策略。 综上所述,映射是Hibernate的核心...
在Java的Hibernate框架中,自定义类型是一种非常实用的功能,它允许开发者根据特定业务需求扩展Hibernate内置的数据类型。当我们发现Hibernate默认的数据类型无法满足我们存储数据的特殊要求时,例如需要处理复杂...
Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者用 Java 对象的方式来操作数据库。在 Hibernate 中,对象的唯一标识符(OID)是非常重要的,因为它用来区分数据库中的不同记录。OID通常被称为主键...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
- **List、Set、Map**:理解这些集合类型在Hibernate中的映射,以及它们的区别。 - **懒加载与立即加载**:了解如何配置集合的加载策略,优化性能。 **6. 缓存机制** - **一级缓存与二级缓存**:了解Hibernate的...
1. 一级缓存:Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。每个 Session 都有自己独立的缓存,且只能被当前工作单元访问。 2. 二级缓存:SessionFactory 的外置的可插拔的缓存插件。其中的数据...
然而,当我们与数据库进行交互,特别是使用ORM(对象关系映射)框架如Hibernate时,这些数据类型需要与数据库中对应的数据类型相匹配,以确保数据的正确存储和检索。下面我们将详细探讨Java、Hibernate以及SQL之间的...
6. **第一级缓存和第二级缓存**:Hibernate内置了第一级缓存,每个Session都有自己的缓存;第二级缓存是可选的,可以跨Session共享,通常由缓存提供商如Ehcache提供。 7. **事务管理**:Hibernate支持JTA(Java ...
6. 在Hibernate中使用Integer和int做映射有什么区别? `Integer`是Java中的一个对象,它可以表示`null`值,而`int`是基本类型,不能为`null`。在Hibernate中,如果字段允许`null`值,推荐使用`Integer`,否则可能...
6. **缓存**:Hibernate内置了二级缓存机制,可以通过配置使用如Ehcache这样的缓存提供者,提高性能。 7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@...
5. **事务管理**:Hibernate内置了事务处理机制,能够方便地管理和控制事务的提交和回滚。 **Hibernate核心组件** 1. **Configuration**:配置Hibernate,包括加载配置文件、连接数据库等。 2. **SessionFactory**...