`
sei_ljf
  • 浏览: 59877 次
  • 性别: 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 的客户化映射类型,把持久化类的任意类型的属性映射到数据库中。
分享到:
评论

相关推荐

    myeclipse自动生成hibernate映射文件

    每个实体类有一个对应的hbm.xml配置文件匹配,myeclipse中有个MyEclipse Database Explorer视图,它提供了myeclipse与数据库直接连接的内置窗口,并且通过此窗口可以生成hibernate的mapping文件。 运用myeclipse的...

    精通 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:Java 对象持久化技术详解(第2版).part4

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

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

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

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

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

    精通hibernate:对象持久化技术孙卫琴第二版part2

    2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建...

    Java常见面试题208道.docx

    118.在 hibernate 中使用 Integer 和 int 做映射有什么区别? 119.hibernate 是如何工作的? 120.get()和 load()的区别? 121.说一下 hibernate 的缓存机制? 122.hibernate 对象有哪些状态? 123.在 hibernate 中 ...

    精通Hibernate:对象持久化技术第二版part3

    2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建...

    惊蛰持久层,实现了动态映射,运行时改变数据库结构,同结构表,多数据库存储

    一个类似于Hibernate的持久层,比hibernate更小巧更灵活。并且实现了动态映射。运行时改变数据库结构。 比itbais不用写sql,内置了分页查询。详情请访问blog http://blog.csdn.net/hzg801106/

    Java的Hibernate框架中集合类数据结构的映射编写教程

    Hibernate可以将Java中几个内置的集合结构映射为数据库使用的关系模型,下面我们就来看一下Java的Hibernate框架中集合类数据结构的映射编写教程:

    从J2SE到J2EE知识点介绍

    2. Java时间和日期类型的Hibernate映射类型 224 3. Java大对象类型的Hibernate映射类型 225 4. 关联关系映射 225 5. Hibernate的事务与并发 238 (十) 数据库 240 1. 数据库的基本概念 240 2. 数据模型 240 3. 关系...

    BeetlSQL数据库访问框架是一个全功能 DAO 工具,同时具有 Hibernate.rar

    BeetSql是一个全功能DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。 在开发效率上,无需注解,自动使用大量内置SQL,轻易完成增删...

    java从入门到精通70个PPT

    43 Hibernate 关联映射 44 HQL实用技术 45 HQL高级 46 Criteria 查询 47-49 项目实战 影院信息查询系统 50 pl/sql 51 Oracle数据库对象 52 提高数据库性能 53 hibernate总结 54 使用Spring容器管理JavaBean 55 ...

    java面试题

    Hibernate持久化:Hibernate根据定义的映射规则将对象持久化保存到数据库,这就实现了对象的持久化。 Spring由那几个模块组成? 答:Spring主要由7个模块组成: 1:Spring核心容器:提供了Spring框架的基本功能 2...

    GRails 中文帮助文档(参考手册)和安装开发介绍帮助

    Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。 易于使用的基于Hibernate的对象-关系映射(ORM)层 ...

    grails-docs-2.0.3.zip

    Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。 易于使用的基于Hibernate的对象-关系映射(ORM)层 ...

    Grails 中文参考手册

    1. 简介 2. 起步 2.1 下载并安装Grails 2.2 创建一个Grails应用 2.3 Hello World示例 2.4 使用IDE 2.5 规约配置 2.6 运行Grails应用 2.7 测试Grails应用 ...15.1 通过Hibernate注释进行映射 15.2 深入了解 16. 脚手架

    Grails 教程

    Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。 Grails是一个full-stack框架,它借助于核心技术与...

Global site tag (gtag.js) - Google Analytics