返回介绍

基本值类型

发布于 2025-04-21 21:42:17 字数 2112 浏览 0 评论 0 收藏

这里只是简单地列举了一些有关内建类型的信息,演示了它们怎么将 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)。当加载对象时,也会立即将这些值加载到各个属性中。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。