`
Cavalier520520
  • 浏览: 10525 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Hibernate 映射类型

阅读更多

Hibernate映射类型分为两种:内置的映射类型和客户化映射类型。内置映射类型负责把一些常见的Java类型映射到相应的SQL类型;此外,Hibernate还允许用户实现UserType或CompositeUserType接口,来灵活地定制客户化映射类型

1.内置映射类型

1).Java基本类型的Hibernate映射类型

Java类型 Hibernate映射类型 标准SQL类型 大小和取值范围

int/Integer int/integer INTEGER 4Byte

long/Long long BIGINT 8Byte

short/Short short SAMLLINT 2Byte

byte/Byte byte TINYINT 1Byte

float/Float float FLOAT 4Byte

double/Double double DOUBLE 8Byte

BigDecimal big_decimal NUMBERIC Numeric(8,2)

char/Character/String character CHAR(1) 定长字符

String string VARCHAR 变长字符

boolean/Boolean boolean BIT 布尔类型

boolean/Boolean yes/no CHAR(1)('Y'/'N') 布尔类型

boolean/Boolean true/false CHAR(1)('T'/'F') 布尔类型

2). Java时间和日期类型的Hibernate映射类型

Java类型 Hibernate映射类型 标准SQL类型 描述

java.util.Date/java.sql.Date date DATE 日期,yyyy-mm-dd

java.util.Date/java.sql.TIme time TIME 时间,hh:mm:ss

java.util.Date/java.sql.Timestamp timestamp TIMESTAMP 时间戳,yyyymmddhhmmss

java.util.Calendar calendar TIMESTAMP 同上

java.util.Calendar calendar_date DATE 日期,yyyy-mm-dd

* 当程序类型为java.sql.Timestamp, 数据库中表属性类型为timestamp的情况下,即使用户以空值插入数据,数据库系统仍然会自动填充timestamp的值

3). Java 大对象类型的Hibernate映射类型

Java类型 Hibernate映射类型 标准SQL类型 MySql类型 Oracle类型

byte[] binary VARBINARY/BLOB BLOB BLOB

String text CLOB TEXT CLOB

serializable 实现serializable接口的一个java类 VARBINARY/BLOB BLOB BLOB

java.sql.Clob clob CLOB TEXT CLOB

java.sql.Blob blob BLOB BLOB BLOB

* 在应用程序中通过Hibernate来保存java.sql.Clob或者java.sql.Blob实例时,必须包含两个步骤:

a. 在一个数据库事务中先保存一个空的Blob或Clob实例;b. 接着锁定这条记录,更新在步骤(1)中保存的Blob或Clob实例,把二进制数据或长文本数据写到Blob或Clob实例中。

1

2Session session = sessionFactory.openSession();

3Transaction tx = session.beginTransaction();

4Customer customer = new Customer();

5customer.setDescription(Hibernate.createClob("")); //先保存一个空的clob

6session.save(customer);

7session.flush();

8//锁定这条记录

9session.refresh(customer,LockMode.UPGRADE);

10oracle.sql.CLOB clob = (oracle.sql.CLOB) customer.getDescription();

11java.io.Writer pw = clob.getCharacterOutStream();

12pw.write(longText);//longText是一个长度超过255的字符串

13pw.close();

14tx.commit();

15session.close();

* 一个java类型对应多个Hibernate映射类型的场合。例如,如果持久化类的属性为java.util.Date类型,对应的Hibernate映射类型可以是date,time

或timestamp。此时必须根据对应的数据库表的字段的SQL类型,来确定Hibernate映射类型。如果字段为Date类型,则hibernate映射为datge,如果为TIME则为time,如果为TIMESTAMP则为timestamp。

Component映射

当对象中聚合了其他的对象的时候,就需要用到Component映射,映射方式在配置文件中添加类似下面的代码
<component name="email" class="onlyfun.caterpillar.Email">
<property name="address" type="string" column="ADDRESS" not-null="true"/>
</component>
其中email是被对象包含的对象,class后面是email的类路径< property ></ property >标签中声明了email类中的成员变量。
2. Set映射
当对象中包含了Set类型的数据的时候就需要用到Set映射,映射方式在配置文件中添加类似下面的代码
<set name="addrs" table="ADDRS">
<key column="USER_ID"/>
<element type="string" column="ADDRESS" not-null="true"/>
</set>
整个集合对象在数据库中是用一个表存储的,例如上面所举例子,在数据库中对应的表是ADDRS其中具有字段USER_ID和ADDRESS
3. List映射
当对象中包含了List类型的数据的时候就需要用到List映射,映射方式在配置文件中添加类似下面的代码
<list name="files" table="FILES">
<key column="USER_ID"/>
<index column="POSITION"/>
<element type="string" column="FILENAME" not-null="true"/>
</list>
配置文件中除了POSITION存储的是元素在list中的位置外,其他意思同Set映射中配置文件的意思相同,具体的不同点就是Set是一个无重复元素的集合而List可以具有重复元素。
4. Map映射
当对象中包含了Map类型的数据的时候就需要用到Map映射,映射方式在配置文件中添加类似下面的代码
<map name="files" table="FILES">
<key column="USER_ID"/>
<index column="DESCRIPTION" type="string"/>
<element type="string" column="FILENAME" not-null="true"/>
</map>
配置文件中除了DESCRIPTION存储的是元素在Map中的索引外,其他意思同Set和List映射中配置文件的意思相同。

 

分享到:
评论

相关推荐

    Hibernate 映射类型与Java 类型对照

    理解Hibernate映射类型与Java类型的对应关系对于有效地使用Hibernate至关重要。 首先,我们来看一下基本数据类型的映射。`integer`对应Java中的`int`或`Integer`,在SQL中映射为`INTEGER`类型;`long`对应`long`或`...

    hibernate映射类型.doc

    以下是一些常见的Hibernate映射类型及其对应的Java和SQL类型: 1. `Integer` 或 `java.lang.Integer`: 映射到标准SQL类型的 `Integer` (Oracle的 `number`)。 2. `Long` 或 `java.lang.Long`: 映射到 `BigInt` ...

    JAVA数据类型与Hibernate的类型映射

    对于数组和集合,如List、Set、Map等,Hibernate提供了ListType、SetType、MapType等映射类型,可以根据实际需求选择。 此外,自定义对象的映射是Hibernate映射中的一个重要部分。通过在实体类上使用@Entity注解,...

    hibernate映射枚举类型

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...

    生成hibernate映射文件工具

    hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    总而言之,Java数据类型、Hibernate映射类型和SQL数据类型之间的对应关系是Java开发者尤其是进行数据库交互的开发者必须掌握的基础知识。通过深入理解并熟练运用这些映射规则,我们可以更好地实现Java应用与数据库...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    常用 Hibernate 映射配置说明.doc

    ### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...

    java hibernate 数据库 类型对比

    在使用Hibernate时,我们需要将Java对象的属性映射到数据库中的列,这就涉及到Java类型与Hibernate映射类型以及标准SQL类型之间的对比。以下是对这些类型的详细解析: 1. **整数类型**: - Java中的`int`或`...

    hibernate映射Oracle中LONG类型

    "hibernate映射Oracle中LONG类型" Hibernate 框架映射 Oracle 中的 LONG 类型字段是一种复杂的技术问题。Oracle 中的 LONG 类型字段是一种特殊的数据类型,用于存储可变长字符串,最大长度限制是 2GB。这与 Java ...

    Hibernate数据类型映射及ID

    标题:“Hibernate数据类型映射及ID” 描述:“Hibernate与各数据库数据类型的映射” ### Hibernate数据类型映射 Hibernate作为一款流行的Java持久层框架,它提供了丰富的数据类型映射功能,使得开发者能够更加...

    Hibernate映射配置实例大全(详细总结)

    "Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...

    hibernate映射文件生成数据库

    Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java类与数据库表之间关系的配置文件。它包含了关于实体类与数据库表的字段对应、主键生成策略、关联关系等信息。通过这些映射文件,Hibernate...

    用Hibernate映射继承关系

    ### 用Hibernate映射继承关系 #### 14.1 继承关系树的每个具体类对应一个表 在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/...

    Hibernate映射实例

    多对多关系是最复杂的映射类型,例如学生可以选择多门课程,课程也可以被多个学生选择。在Hibernate中,使用`@ManyToMany`注解处理。多对多关系通常需要一个中间表来存储双方的关联信息,这个中间表可以通过`@Join...

    用MyEclipse自动生成hibernate映射文件和实体类

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    Hibernate映射文件主键的生成

    本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和使用。 首先,主键(Primary Key)是数据库表中用于唯一标识一条记录的字段,其值在表中必须是唯一的,并且通常不...

Global site tag (gtag.js) - Google Analytics