Hibernate映射的基本操作
++YONG原创,转载请注明
Hibernate映射主要是通过对象关系映射文件实现,对象关系映射文件把数据库中的实体(一般为二维表)映射到面向对象中的实体对象,把数据库中多个表之间的相互关系也反映到映射好的类中。以后,在Hibernate中对数据库的操作就直接转换为对这些实体对象的操作了。
1. 映射文件说明:
正确理解各个配置选项的含义是掌握映射文件的关键。映射文件可以对面向对象中的关联关系、继承关系和组合关系等各种关系进行配置。如:
<!-- XML文件的声明 -->
<?xml version="1.0" encoding="utf-8"?>
<!-- hibernate DTD文件的声明 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 映射文件的根节点 -->
<hibernate-mapping>
<!--
对象关系映射的开始:class元素表示类和数据库中的表的映射关系。
name属性指定持久化类(或者接口)的Java全限定名;
table属性指定要映射的对应的数据库表名
-->
<class name="org.qiujy.bean.User" table="user">
<!--
持久化类对象的对象标识符(OID)和表的主键的映射关联:
name属性指定类中作为OID的属性名;
column属性表中主键字段的名字;
type属性指定Hibernate的映射类型
-->
<id name="id" column="id" type="int">
<!-- 指定对象标识符生成器:class属性指定生成器的类别名 -->
<generator class="native"/>
</id>
<!--
普通属性的映射:
name属性:属性的名字,以小写字母开头;
column属性:对应的数据库字段名
type属性:指定Hibernate的映射类型
-->
<property name="name" column="name" type="string"/>
<property name="age" column="age" type="int"/>
</class>
</hibernate-mapping>
|
2. Hibernate映射类型:
在对象-关系映射文件中,Hibernate映射类型作为Java类型和SQL类型的桥梁。在映射文件中建议使用Hibernate映射类型。
2.1. java基本映射类型的Hibernate映射类型:
Java类型、Hibernate映射类型以及SQL类型之间的对应关系:
Java类型
|
Hibernate映射类型
|
标准SQL类型
|
int或java.lang.Integer
|
integer或int
|
INTEGER
|
long或java.lang.Long
|
long
|
BIGINT
|
short或java.lang.Short
|
short
|
SMALLINT
|
byte或java.lang.Byte
|
byte
|
TINYINT
|
float或java.lang.Float
|
float
|
FLOAT
|
double或java.lang.Double
|
double
|
DOUBLE
|
java.math.BigDecimal
|
big_decimal
|
NUMERIC
|
char或java.lang.Character
|
character
|
CHAR(1)
|
java.lang.String
|
string
|
VARCHAR
|
boolean或java.lang.Boolean
|
boolean
|
BIT
|
boolean或java.lang.Boolean
|
yes_no
|
CHAR(1)('Y'或' N')
|
boolean或java.lang.Boolean
|
true_false
|
CHAR(1)('T'或' F')
|
2.2. java时间和日期类型的Hibernate映射类型:
Java类型
|
Hibernate映射类型
|
标准SQL类型
|
说明
|
java.util.Date或java.sql.Date
|
date
|
DATE
|
日期
|
java.util.Date或java.sql.Time
|
time
|
TIME
|
时间
|
java.util.Date或java.sql.Timestamp
|
timestamp
|
TIMESTAMP
|
时间戳
|
java.util.Calendar
|
calendar
|
TIMESTAMP
|
|
java.util.Calendar
|
calendar_date
|
DATE
|
|
2.3. java大对象类型的Hibernate映射类型:
Java类型
|
Hibernate映射类型
|
标准SQL类型
|
MySQL类型
|
Oracle类型
|
byte[]
|
binary
|
VARBINARY(或者BLOB)
|
BLOB
|
BLOB
|
java.lang.String
|
text
|
CLOB
|
TEXT
|
CLOB
|
实现java.io.Serializable接口的任意一个java类
|
serializable
|
VARBINARY(或者BLOB)
|
BLOB
|
BLOB
|
java.sql.Clob
|
clob
|
CLOB
|
TEXT
|
CLOB
|
java.sql.Blob
|
blob
|
BLOB
|
BLOB
|
BLOB
|
3. 映射对象标识符(OID):
Hibernate中使用对象标识符(OID)来惟一标识一个对象。为了应付多变的业务要求,Hibernate制定了多种主键生成器。在hibernate的映射文件中,可以指定主键的生成器,如:
<id name="id" column="id" type="int">
<generator class="native"/>
</id>
|
Hibernate提供的几种内置标识符生成器:
标识符生成器
|
描述
|
increment:
|
由hibernate自动以递增的方式生成标识符,每次增量为1.适用于代理主键.
|
identity:
|
由底层数据库生成标识符.数据库必须支持自动增长字段类型,不便于不同数据库之间的移植.适用于代理主键.
|
sequence:
|
Hibernate根据底层数据库序列来生成标识符.前提是条件是底层数据库支持序列(如Oracle).适用于代理主键.
|
hilo:
|
Hibernate根据high/how算法来生成标识符.适用于代理主键.
|
|
分享到:
相关推荐
(1) Hibernate是一个面向Java环境的对象/关系数据库映射工具,Hibernate不仅管理Java类型到数据库表的映射,还提供查询数据和操作数据的OO方法。 (2) Hibernate对JDBC进行了轻量级的对象封装,使Java程序员可以...
007 Hibernate 基本映射标签和属性介绍 008 多对一 关联映射 009 一对一 主键关联映射_单向 010 一对一 主键关联映射_双向 011 一对一 唯一外键关联映射_单向 012 一对一 唯一外键关联映射_双向 013 session_flush ...
11.1.1 Java基本类型的Hibernate映射类型 11.1.2 Java时间和日期类型的Hibernate映射类型 11.1.3 Java大对象类型的Hibernate映射类型 11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用...
映射是Hibernate框架操作数据库数据的重要特性之一,这里我们来看一下Java的Hibernate框架中的基本映射用法讲解,包括最基本的单向一对一与多对一映射关系等:
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
Hibernate 映射 17.3. Hibernate 代码 18. 示例:不同的映射 18.1. 雇员/雇主(Employer/Employee) 18.2. 作者/著作(Author/Work) 18.3. 客户/订单/产品(Customer/Order/Product) 19. 最佳...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
和JDBC比较一下,同样都是数据库中间件(DM,Database Middleware),JDBC利用SQL语言操作的是数据,而Hibernate则是利用自己的查询语言Hibernate Query Language(HQL虽然底层还是要转换成sql语言)操作的是持久化对象...
1、进一步掌握 Hibernate 应用的开发方法,理解 Hibernate 配置文件中主要元素 的作用,会开发持久化类,并进行... 3、理解 Hibernate 基本 API 中 Session 的主要作用,掌握利用 Session 进行数据 库操作的基本步骤。
系统学习Hibernate3的开发知识,循序渐进 第一章:Hibernate入门 包括:是什么、ORMapping原理、能干什么、有什么、怎么做(做什么) ... 包括:分增删改查的操作说明Hibernate基本的实现原理 第八章:最佳实践
6.3.1 基本的集合映射 6.3.2 排序集合和有序集合 6.3.3 映射嵌入式对象的集合 6.4 映射父/子关系 6.4.1 多样性 6.4.2 最简单的可能关联 6.4.3 使关联双向 6.4.4 级联对象状态 6.5...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. ...
11.1.1 Java基本类型的Hibernate映射类型 11.1.2 Java时间和日期类型的Hibernate映射类型 11.1.3 Java大对象类型的Hibernate映射类型 11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用...
11.1.1 Java基本类型的Hibernate映射类型 11.1.2 Java时间和日期类型的Hibernate映射类型 11.1.3 Java大对象类型的Hibernate映射类型 11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用...
11.1.1 Java基本类型的Hibernate映射类型 11.1.2 Java时间和日期类型的Hibernate映射类型 11.1.3 Java大对象类型的Hibernate映射类型 11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. ...