转:http://blog.csdn.net/javacoffe/article/details/1667224
Hibernate的类型映射类型从总体上可以分为两种:内置类型映射和客户类型映射。内置类型映射负责把一些常见的java类型映射到sql类型:此外,Hibernate还允许用户实现UserType或CompositeUserType接口,来灵活的制定客户化映射类型。客户类型映射可以将用户定义的java类映射到数据库表的相应字段。
内置类型映射:
(1) Java基本类型的Hibernate映射:
表2.1列出了Hibernate中的映射类型和与其对应的Java类型以及对应的标准SQL类型和相应的说明。
表2.1
Hibernate映射类型
|
Java类型
|
标准SQL类型
|
说明
|
integer或者int
|
int或者java.lang.Integer
|
INTEGER
|
4字节
|
long
|
long或者java.lang.Long
|
BIGINT
|
8字节
|
short
|
short或者java.lang.Short
|
SMALLINT
|
2字节
|
byte
|
byte或者java.lang.Byte
|
TINYINT
|
1字节
|
float
|
float或者java.lang.Float
|
FLOAT
|
4字节,单精度浮点数
|
double
|
double或者java.lang.Double
|
DOUBLE
|
8字节,双精度浮点数
|
big_decimal
|
java.math.BigDecimal
|
NUMERIC
|
NUMERIC(8,2)表示共8位数字,其中两位是小数
|
character
|
char或者java.lang.Character,java.lang.String
|
CHAR(1)
|
定长字符
|
string
|
java.lang.String
|
VARCHAR
|
变长字符
|
boolean
|
boolean或者java.lang.Boolean
|
BIT
|
布尔类型
|
yes_no
|
boolean或者java.lang.Boolean
|
CHAR(1)(‘Y’ 或者’N’)
|
布尔类型
|
true_false
|
boolean或者java.lang.Boolean
|
CHAR(1)(‘T’ 或者’F’)
|
布尔类型
|
Hibernate映射类型
|
Java类型
|
标准SQL类型
|
说明
|
integer或者int
|
int或者java.lang.Integer
|
INTEGER
|
4字节
|
long
|
long或者java.lang.Long
|
BIGINT
|
8字节
|
short
|
short或者java.lang.Short
|
SMALLINT
|
2字节
|
byte
|
byte或者java.lang.Byte
|
TINYINT
|
1字节
|
float
|
float或者java.lang.Float
|
FLOAT
|
4字节,单精度浮点数
|
double
|
double或者java.lang.Double
|
DOUBLE
|
8字节,双精度浮点数
|
big_decimal
|
java.math.BigDecimal
|
NUMERIC
|
NUMERIC(8,2)表示共8位数字,其中两位是小数
|
character
|
char或者java.lang.Character,java.lang.String
|
CHAR(1)
|
定长字符
|
string
|
java.lang.String
|
VARCHAR
|
变长字符
|
boolean
|
boolean或者java.lang.Boolean
|
BIT
|
布尔类型
|
yes_no
|
boolean或者java.lang.Boolean
|
CHAR(1)(‘Y’ 或者’N’)
|
布尔类型
|
true_false
|
boolean或者java.lang.Boolean
|
CHAR(1)(‘T’ 或者’F’)
|
布尔类型
|
2、Java时间和日期类型的Hibernate的类型映射:
在Java中,代表时间和日期的类型包括:java.util.Date 和 java.util.Calendar。此外在JDBC API中还提供了三个扩展了java.util.Date类的子类:java.sql.Date 和 java.sql.Time 以及 java.sql.Timestamp,这三个类分别和标准sql类型中的DATE,TIME,TIMESTAMP相对应。
表2.2列出了Hibernate中的映射类型和与其对应的Java日期类型以及对应的标准SQL类型和相应的说明。
表2.2
映射类型
|
Java类型
|
标准SQL类型
|
说明
|
date
|
java.util.Date或者java.sql.Date
|
DATE
|
代表日期:形势为YYYY-MM-DD
|
time
|
java.util.Date或者java.sql.Time
|
TIME
|
代表时间:形式为HH:MM:SS
|
timestamp
|
java.util.Calendar
|
TIMESTAMP
|
代表时间和日期,形式为YYYYMMDDHHMMSS
|
calendar
|
同上
|
同上
|
同上
|
calendar_date
|
java.util.Calendar
|
DATE
|
代表日期:形势为YYYY-MM-DD
|
映射类型
|
Java类型
|
标准SQL类型
|
说明
|
date
|
java.util.Date或者java.sql.Date
|
DATE
|
代表日期:形势为YYYY-MM-DD
|
time
|
java.util.Date或者java.sql.Time
|
TIME
|
代表时间:形式为HH:MM:SS
|
timestamp
|
java.util.Calendar
|
TIMESTAMP
|
代表时间和日期,形式为YYYYMMDDHHMMSS
|
calendar
|
同上
|
同上
|
同上
|
calendar_date
|
java.util.Calendar
|
DATE
|
代表日期:形势为YYYY-MM-DD
|
字段类型映射配置事例:
<property name=”name” column=”Name” type=”string”/>
<property name=”birthday” column=”Brithday” type=”date”/>
<property name=”registereddate” column=”Registereddate” type=”timestamp”/>
下图为以上配置对应的数据库表:
Name varchar2(20)
Birthday DATE
Registereddate Timestamp
|
Name varchar2(20)
Birthday DATE
Registereddate Timestamp
|
3、JDK自带的个别Java类的Hibernate映射类型:
表2.3列出了个别Java类的Hibernate映射类型,与此对应的标准SQL类型均为VARCHAR类型。
表2.3
映射类型
|
Java类型
|
标准SQL类型
|
class
|
java.lang.Class
|
VARCHAR
|
locale
|
java.util.Locale
|
VARCHAR
|
timezone
|
java.util.TimeZone
|
VARCHAR
|
currency
|
java.util.Currency
|
VARCHAR
|
映射类型
|
Java类型
|
标准SQL类型
|
class
|
java.lang.Class
|
VARCHAR
|
locale
|
java.util.Locale
|
VARCHAR
|
timezone
|
java.util.TimeZone
|
VARCHAR
|
currency
|
java.util.Currency
|
VARCHAR
|
分享到:
相关推荐
- **自定义Type**:创建自定义的Hibernate类型,覆盖默认的日期时间处理方式,以满足特定需求。 以上就是关于"解决Hibernate对于Date类型的数据返回结果中时分秒不对的问题"的详细分析和解决方案。在实际开发中,...
hibernate和java类型转换,hibernate和java类型转换
而在Java持久化框架Hibernate中,这些数据类型需要与数据库中的字段类型进行映射,以便正确地存储和检索数据。这篇博客主要探讨了Java数据类型如何与Hibernate的类型映射进行对应。 首先,Java的基本数据类型在...
* Hibernate Type:需要查找该 Hibernate 类型对应的 Java 类型,从而再找到数据库类型 主键的产生器 * Increment:查找主键的最大值,在最大值的基础上加 1 * Assigned:由程序手动赋值 * Identity:支持主键自动...
hibernate2json 该实现取自 要使用添加Maven依赖项,请执行以下操作: < groupId>com.github.alaptseu</ groupId> < artifactId>hibernate2json < version>1.0 如果您喜欢快照版本: < id>oss....
8. **类型转换**:hibernate-types-52.jar包含了一些自定义的Hibernate类型,用于处理如JSON、日期时间等复杂类型的数据。 9. **JPA规范**:如javax.persistence-api.jar,提供了JPA的规范接口,使得Hibernate可以...
- **Hibernate类型与Oracle数据类型的映射关系**:例如,`java.lang.Long` 对应于Oracle的 `NUMBER` 类型,`java.lang.String` 对应 `VARCHAR2`,`java.lang.Double` 对应 `NUMBER`,`java.sql.Timestamp` 对应 `...
- `@Type`: 使用自定义的Hibernate类型,如日期时间格式等。 以上仅是Hibernate Annotation部分核心概念的简述,实际使用中还需要根据项目需求和最佳实践来灵活应用。深入理解和熟练掌握这些注解,能极大地提升...
这时,我们需要创建自定义的Hibernate类型来处理这些特殊的字段。 创建自定义类型通常包括以下步骤: 1. **定义Java类**:为自定义字段创建一个Java类,这个类将封装特定的数据结构。例如,如果我们有一个日期范围...
这里,我们提到了一个名为“Hibernate的映射类型_hibernate_mysql映射类型.doc”的文档,这很可能是一个详细的对照表,列出了Hibernate如何将Java数据类型映射到MySQL数据库的SQL数据类型。MySQL是世界上最流行的...
组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联, 以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be considered an exotic usage)。 Hibernate倾向于支持...
在这一部分,作者还介绍了一个自定义的Hibernate类型JsonType,它可以将对象列表转换为JSON字符串格式存储,并能够在需要时将这些字符串反序列化回对象列表。这种做法能够简化数据库模型,避免不必要的关联表查询。 ...
Hibernate 提供了多种数据类型,用于匹配不同数据库系统支持的标准 SQL 数据类型。这些数据类型包括: - **数值类型**:例如,`byte` 和 `java.lang.Byte` 映射到 `TINYINT`,`short` 和 `java.lang.Short` 映射到 ...
理解Hibernate映射类型与Java类型的对应关系对于有效地使用Hibernate至关重要。 首先,我们来看一下基本数据类型的映射。`integer`对应Java中的`int`或`Integer`,在SQL中映射为`INTEGER`类型;`long`对应`long`或`...
5.2 Hibernate类型系统 5.2.1 概述实体和值类型 5.2.2 内建的映射类型 5.2.3 使用映射类型 5.3 创建定制的映射类型 5.3.1 考虑定制的映射类型 5.3.2 扩展点 5.3.3 定制映射类型的案例...
在Hibernate中,这可能通过自定义的Hibernate类型或者在保存前使用Java的`PasswordEncoder`接口进行实现。同时,系统应该有防止SQL注入的措施,例如使用预编译的SQL语句或使用Hibernate的参数化查询。 在实际运行时...
一个更简洁的解决方案是将这些数据存储为JSON格式,并利用自定义的Hibernate类型进行转换。例如,在OrderModel类中,可以定义一个字段`favorableDescList`,使用`@Type(type = ...
为了更精确地控制 `char` 类型的处理方式,可以考虑使用 Hibernate 提供的自定义类型,比如 `CharacterType` 或者自定义实现 `org.hibernate.usertype.UserType` 接口来创建自定义的类型转换器。 ##### 3. 参数绑定...
- **Hibernate类型**:概述了Hibernate提供的各种内置数据类型及其用途。 以上是马士兵Java框架Hibernate学习笔记的主要知识点概览,涵盖了从基础配置到高级特性的一系列内容。对于初学者来说,这是一个很好的起点...
本篇文章将深入探讨如何在Hibernate中实现自定义数据类型。 首先,我们需要理解Hibernate是如何处理数据类型的。默认情况下,Hibernate使用Java的标准数据类型来映射数据库中的列。例如,Integer对应INT,String...