`
sei_ljf
  • 浏览: 60892 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Hibernate的内置映射类型有那些?

阅读更多
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实体映射

    Hibernate内置了二级缓存,可提高性能。一级缓存是Session级别的,每个Session有自己的缓存;二级缓存则是SessionFactory级别的,可以跨Session共享数据。 综上所述,"Hibernate实体映射"的学习资源涵盖了从基本...

    myeclipse自动生成hibernate映射文件

    在开发Java应用,尤其是涉及到数据库交互的时候,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而MyEclipse作为一款集成开发环境,提供了对Hibernate的全面支持,包括自动生成...

    hibernate的映射文件配置

    标题:“Hibernate的映射文件配置” 描述:本文深入解析了Hibernate映射文件配置的核心概念,重点阐述了映射文件的基本结构及其组成部分,包括主键(id)、普通属性(property)等关键元素的配置方法和策略。 ### ...

    Hibernate映射文件主键的生成

    本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和使用。 首先,主键(Primary Key)是数据库表中用于唯一标识一条记录的字段,其值在表中必须是唯一的,并且通常不...

    XDoclet 与Hibernate 映射

    【XDoclet 与Hibernate 映射】 XDoclet 是一款强大的Java注解处理工具,它允许开发者在Java源代码中添加元数据,这些元数据可以用来自动生成各种配置文件,包括Hibernate的映射文件(hbm.xml)。这种方式极大地提高...

    hibernate3需要的所有包

    1. **hibernate3.jar**:这是Hibernate的核心库,包括ORM(对象关系映射)引擎、查询语言HQL(Hibernate Query Language)、Criteria API等。它提供了将Java对象映射到数据库表的能力,并允许执行复杂的查询操作。 ...

    Hibernate入门到精通

    Hibernate 有很多优点,它可以帮助开发者快速地访问和操作数据库。下面是 Hibernate 的一些优点: * 简洁高效:Hibernate 提供了一种简洁高效的方式来访问和操作数据库。 * 支持多种数据库管理系统:Hibernate 支持...

    映射Hibernate

    3. **类型转换**: Hibernate提供了一些内置的类型转换器,如`@Type`注解,用于处理自定义类型的字段。 4. **继承映射**: Hibernate支持单表继承、联合继承和表 per 类继承策略。 综上所述,映射是Hibernate的核心...

    简要分析Java的Hibernate框架中的自定义类型

    在Java的Hibernate框架中,自定义类型是一种非常实用的功能,它允许开发者根据特定业务需求扩展Hibernate内置的数据类型。当我们发现Hibernate默认的数据类型无法满足我们存储数据的特殊要求时,例如需要处理复杂...

    Hibernate内置标识符生成器

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者用 Java 对象的方式来操作数据库。在 Hibernate 中,对象的唯一标识符(OID)是非常重要的,因为它用来区分数据库中的不同记录。OID通常被称为主键...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  11.2.1 用客户化映射类型取代Hibernate组件  11.2.2 用UserType映射枚举类型  11.2.3 实现CompositeUserType接口  11.2.4 运行本节范例程序  11.3 ...

    Hibernate课程

    - **List、Set、Map**:理解这些集合类型在Hibernate中的映射,以及它们的区别。 - **懒加载与立即加载**:了解如何配置集合的加载策略,优化性能。 **6. 缓存机制** - **一级缓存与二级缓存**:了解Hibernate的...

    Hibernate工作原理及为什么要用

    1. 一级缓存:Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。每个 Session 都有自己独立的缓存,且只能被当前工作单元访问。 2. 二级缓存:SessionFactory 的外置的可插拔的缓存插件。其中的数据...

    Hibernate和java中的对应数据类型

    然而,当我们与数据库进行交互,特别是使用ORM(对象关系映射)框架如Hibernate时,这些数据类型需要与数据库中对应的数据类型相匹配,以确保数据的正确存储和检索。下面我们将详细探讨Java、Hibernate以及SQL之间的...

    hibernate3必要jar包

    6. **第一级缓存和第二级缓存**:Hibernate内置了第一级缓存,每个Session都有自己的缓存;第二级缓存是可选的,可以跨Session共享,通常由缓存提供商如Ehcache提供。 7. **事务管理**:Hibernate支持JTA(Java ...

    2020版Hibernate 12 道.pdf

    6. 在Hibernate中使用Integer和int做映射有什么区别? `Integer`是Java中的一个对象,它可以表示`null`值,而`int`是基本类型,不能为`null`。在Hibernate中,如果字段允许`null`值,推荐使用`Integer`,否则可能...

    hibernate-release-5.2.10

    6. **缓存**:Hibernate内置了二级缓存机制,可以通过配置使用如Ehcache这样的缓存提供者,提高性能。 7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@...

    开源对象关系映射框架Hibernate知识培训

    5. **事务管理**:Hibernate内置了事务处理机制,能够方便地管理和控制事务的提交和回滚。 **Hibernate核心组件** 1. **Configuration**:配置Hibernate,包括加载配置文件、连接数据库等。 2. **SessionFactory**...

Global site tag (gtag.js) - Google Analytics