- 译者序
- 前言
- 本书怎么使用
- 本书排版字体约定
- 本书网站
- 致谢
- 第一部分 Hibernate 快速入门
- 第 1 章 安装和设置
- 第 2 章 映射简介
- 第 3 章 驾驭 Hibernate
- 第 4 章 集合与关联
- 第 5 章 更复杂的关联
- 第 6 章 自定义值类型
- 第 7 章 映射标注
- 第 8 章 条件查询
- 第 9 章 浅谈 HQL
- 第二部分 与其他工具的集成
- 第 10 章 将 Hibernate 连接到 MySQL
- 第 11 章 Hibernate 与 Eclipse:Hibernate Tools 使用实战
- 第 12 章 Maven 进阶
- 第 13 章 Spring 入门:Hibernate 与 Spring
- 第 14 章 画龙点睛:用 Stripes 集成 Spring 和 Hibernate
- 附录 A Hibernate 类型
- 附录 B Criteria API
- 附录 C Hibernate SQL 方言
- 附录 D Spring 事务支持
- 附录 E 参考资源
- 作者简介
- 封面介绍
基本值类型
这里只是简单地列举了一些有关内建类型的信息,演示了它们怎么将 Java 类关联到 SQL 的字段类型。我们提供了数据库之间存在着的差异的例子,但不打算列举每种差异。有关权威性的细节描述,可以查看 org.hibernate.dialect 中所有数据库方言实现的源代码(查找 register-ColumnType()调用)。
Hibernate 的基本类型可以大致分为:
简单数字和 Boolean 类型
这些类型都对应于 Java 的原始类型,可以代表数字、字符、Boolean 值或者其封装类型,它们要映射到适当的 SQL 字段类型(基于使用的 SQL 方言)。这些类型是:boolean、byte、character、double、float、integer、long、short、true_false 以及 yes_no。最后两种类型是 Boolean 值在数据库中的另外两种表示形式,true_false 使用"T"和"F"值,而 yes_no 则使用"Y"和"N"值。
字符串类型
Hibernate 类型 string 可以将 java.lang.String 映射到与 SQL 方言相应的字符串字段类型(通常是 VARCHAR,或者是 Oracle 的 VARCHAR2)。
日期类型
Hibernate 使用 date、time 以及 timestamp,将 java.util.Date(及其子类)映射到相应的 SQL 类型(例如 DATE、TIME、TIMESTAMP)。timestamp 实现使用的是 Java 环境中的当前时间;除了使用 dbtimestamp,你也可以使用数据库对当前时间的符号表示方法。如果你比较喜欢使用更方便的 java.util.Calendar 类,在编写自己的代码时也不需要将它和 Date 类型的值来回转换;你可以用 calendar(这个类型将日期和时间保存为 TIMESTAMP)或 calendar_date(这个类型只接受日期部分,映射为 DATE 字段类型)直接进行映射。
任意精度的数字类型
Hibernate 的 big_decimal 类型提供从 java.math.BigDecimal 到相应的 SQL 类型之间的映射(通常是 NUMERIC,但 Oracle 使用 NUMBER)。Hibernate 的 big_integer 提供对 java.math.BigInteger 的映射(通常映射到 BIGINT,但 Informix 称之为 INT8,Oracle 则再次使用 NUMBER)。
本地化值
Hibernate 类型 locale、timezone 以及 currency 保存为字符串(VARCHAR 或 VARCHAR2),并被映射到 java.util 包中的 Locale、TimeZone 以及 Currency 类。Locale 和 Currency 的实例用它们的 ISO 代码进行保存,而 TimeZone 则用它的 ID 属性进行保存。
Class 名称
Hibernate 的 class 类型将 java.lang.Class 的实例映射为它的完全限定的名称,保存在字符串类型的字段中(VARCHAR,或者 Oracle 中的 VARCHAR2)。
字节数组
binary 类型将字节数组(byte array)映射为对应的 SQL 二进制类型。可序列化对象 serializable 类型用于将可序列化的 Java 类型映射到对应的 SQL 二进制类型。这是一种后备类型,当一个对象没有更合适的特定持久化映射时(而且也不想为它实现一个 UserType 自定义映射,参见下一节),就可以尝试使用这种类型。该类型映射到的 SQL 类型与 binary 的映射类型相同,稍后将加以介绍。
JDBC 大型数据对象
blob 和 clob 类型为 java.sql 包中的 Blob 和 Clob 类提供映射。如果你正在处理真正的大型数据对象,最好是将这些属性声明为 Blob 或 Clob,即便这样会在数据对象中需要增加一个显式的 JDBC 依赖。通过 Hibernate 可以方便地利用 JDBC 的功能来延迟加载属性值,只有在需要的时候才加载这些大型数据对象。
如果你不担心数据的体积太庞大,就可以不必使用这种直接的 JDBC 接口,只要将属性类型声明为 String 或 byte[],再将它用 text 或 binary 进行映射。这些类型分别对应于 SQL 类型的 CLOB 和 VARBINARY(在 Oracle 中是 RAW,在 PostgreSQL 中则是 BYTEA)。当加载对象时,也会立即将这些值加载到各个属性中。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论