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 的客户化映射类型,把持久化类的任意类型的属性映射到数据库中。
分享到:
相关推荐
每个实体类有一个对应的hbm.xml配置文件匹配,myeclipse中有个MyEclipse Database Explorer视图,它提供了myeclipse与数据库直接连接的内置窗口,并且通过此窗口可以生成hibernate的mapping文件。 运用myeclipse的...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建...
118.在 hibernate 中使用 Integer 和 int 做映射有什么区别? 119.hibernate 是如何工作的? 120.get()和 load()的区别? 121.说一下 hibernate 的缓存机制? 122.hibernate 对象有哪些状态? 123.在 hibernate 中 ...
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/
Hibernate可以将Java中几个内置的集合结构映射为数据库使用的关系模型,下面我们就来看一下Java的Hibernate框架中集合类数据结构的映射编写教程:
2. Java时间和日期类型的Hibernate映射类型 224 3. Java大对象类型的Hibernate映射类型 225 4. 关联关系映射 225 5. Hibernate的事务与并发 238 (十) 数据库 240 1. 数据库的基本概念 240 2. 数据模型 240 3. 关系...
BeetSql是一个全功能DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。 在开发效率上,无需注解,自动使用大量内置SQL,轻易完成增删...
43 Hibernate 关联映射 44 HQL实用技术 45 HQL高级 46 Criteria 查询 47-49 项目实战 影院信息查询系统 50 pl/sql 51 Oracle数据库对象 52 提高数据库性能 53 hibernate总结 54 使用Spring容器管理JavaBean 55 ...
Hibernate持久化:Hibernate根据定义的映射规则将对象持久化保存到数据库,这就实现了对象的持久化。 Spring由那几个模块组成? 答:Spring主要由7个模块组成: 1:Spring核心容器:提供了Spring框架的基本功能 2...
Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。 易于使用的基于Hibernate的对象-关系映射(ORM)层 ...
Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。 易于使用的基于Hibernate的对象-关系映射(ORM)层 ...
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基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。 Grails是一个full-stack框架,它借助于核心技术与...