hibernate-4-or映射

上传人:san****019 文档编号:70866183 上传时间:2019-01-18 格式:PPT 页数:29 大小:1.69MB
返回 下载 相关 举报
hibernate-4-or映射_第1页
第1页 / 共29页
hibernate-4-or映射_第2页
第2页 / 共29页
hibernate-4-or映射_第3页
第3页 / 共29页
hibernate-4-or映射_第4页
第4页 / 共29页
hibernate-4-or映射_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《hibernate-4-or映射》由会员分享,可在线阅读,更多相关《hibernate-4-or映射(29页珍藏版)》请在金锄头文库上搜索。

1、Hibernate框架 O/R映射,本章主要内容,1.Hibernate的O/R映射文件 2.映射对象标识符 3. Hibernate的类型 本节重点:O/R映射文件和主键生成器 应用:编写简单的Hibernate程序,实现CRUD,1.O/R 映射定义,对象和关系数据库之间的映射通常是用一个XML文档(XML document)来定义的。这个映射文档被设计为易读的,并且可以手工修改。映射语言是以Java为中心,这意味着映射文档是按照持久化类的定义来创建的,而非表的定义。 Hibernate的映射文件:*.hbm.xml,一个映射文件框架, 注:映射文件可以包含多个类标记,但不推荐。,1.1

2、元素,该元素是Hibernate映射文件的根元素,包括一些可选的属性。,1.2 元素,用元素来定义一个持久化类。最常见的用法就是使用name和table来制定类和表的关联。,1.2 元素,1.2 元素,注:对Hibernate来说,视图与表是没有区别的。如果想使用视图,又不能在数据库中创建它,则可以映射一个不可变(immutable)并且是只读的实体到一个给定的SQL子查询表达式。,1.3 元素,被映射的类必须定义对应数据库主键字段。 元素定义了该属性到数据表主键字段的映射。,1.3 元素,可以自定义也可以使用Hibernate内置方式,1.4 元素,JavaBean属性与数据库表字段的对应关

3、系,1.4 元素,属性介绍如下:,1.4 元素,关于type属性可以是如下几种: (1)Hibernate基本类型名 (比如:integer, string, character, date, timestamp, float, binary, serializable, object, blob)。 (2)Java类的全限定类名,该类等同于上面的一种Hibernate基础类型(比如: int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob) (3)一个可以序列化的Java类的名字

4、 (4)一个自定义类型的类的名字(如:org.crazyit.model.Bid),1.5其他属性,元素是可选的,指明了表中包含时间戳数据。 元素是可选的,表明表中包含附带版本信息的数据。 一对一和一对多 持久化对象之间一对一的关联关系是通过元素定义的多对一关联通过元素定义 元素允许定义一个命名的逻辑分组(grouping)包含一个类中的多个属性。 元素可以定义应用程序有两个同样名字的持久化类,2.映射对象标识符,Hibernate使用对象标识符(OID)来建立内存中的对象和表中记录的对应关系,它和表的主键对应。 为了保证OID的惟一性和不可变性,应该让Hibernate而不是应用程序来为OI

5、D赋值,同时带来的效果是,数据库表的主键值也是可由Hibernate生成 自然主键和代理主键,推荐方式,2.1 标识符的含义,作为主键的字段必须不能为空,值唯一且永不改变 Java语言按内存地址区分不同的对象。 这两种方式与数据库都很难对应,Hibernate给每个对象加一个标识符来区分对象。,2.2 内置生成器介绍,Hibernate来自动生成一个OID。使用的是元素,它用来设定标识符生成器。,2.3 Hibernate的内置标示符生成器的用法,1increment标识符生成器 由Hibernate以递增方式为代理主键赋值,增量为1(Hibernate在初始化时读取出表中主键最大值,在这个基

6、础上加1) 要求:其主键是long、short、int 适用于单个hibernate访问同一个数据库的数据,但不可应用于集群中 2UUID生成器 生成的主键包含IP地址和JVM启动时间,保证网络范围内唯一,2.3 Hibernate的内置标示符生成器的用法,3identity标识符生成器 由底层数据库来生成标识符 要求底层数据库支持自增类型 OID必须为long、int和short 可用DB:MySQL、SQLServer、Servler、 Sybase、DB2 4sequence标识符生成器 由底层数据库提供序列来生成标识符 要求数据库支持序列。 可用DB:Oracle、DB2 OID必须为

7、long、int和short,2.3 Hibernate的内置标示符生成器的用法,5hilo标识符生成器 按照high/low算法来生成标识符 优点是适用于所有数据库 缺点是只能在一个数据库中保证唯一 OID必须为long、int和short 6native标识符生成器 根据数据库的能力,自动选择identity、sequence、hilo中的一种 优点是适合跨平台开发 缺点是OID必须为long、int和short,2.4 映射自然主键,当数据库表采用自然主键时,Hibernate使用assigned生成器来生成主键。 generator的默认方式 应用程序在save()之前必须手动地为对象

8、分配一个标识符 注: 应尽量避免使用自然主键 使用assigned生成器时,除非有一个version或timestamp属性,或者定义了Interceptor.isUnsaved(),否则需要让Hibernate使用unsaved-value=“undefined”,强制Hibernate查询数据库来确定一个实例是临时的还是脱管的。,2.5 复合自然主键,如果数据表的自然主键是复合键,那么在Hibernate中用元素定义。 有3种方式可以选择: 直接使用联合主键。 mapped(映射式)组合标识符 identifier component(标识符组件)推荐,3 Hibernate的类型,Hib

9、ernate的内置类型通常使用和Java类型相同的名字,3.1 Java基本值类型的Hibernate映射,下表列出了Hibernate映射类型、对应的JAVA基本类型(包括它们的包装类)和以及对应的标准SQL类型。,char/java.lang.Character,3.2 Java时间和日期类型的Hibernate映射类型,在Java中,代表时间和日志的类型包括:java.util.Date和java.util.Calendar 此外在JDBC API中还提供了三个扩展java.util.Date类的子类:java.sql.Date、java.sql.Time和java.sql.Timest

10、amp,这三个类分别和标准的SQL类型中的DATA、TIME、TIMESTAMP类型对应。,3.3 Java大对象类型的Hibernate映射类型,在Java中,java.lang.String可用于表示长字符串(长度没有限制),字节数组byte可用于存放图片或长文件的二进制组数据。此外,在JDBC API中又提供了java.sql.Clob和java.sql.Blob类型,它们分别和标准SQL中的CLOB和BLOB类型对应。,3.4 JDK自带的JAVA类的Hibernate映射类型,Hibernate可以直接把一些常用的Java类如class、locale等类型保存在数据库中。,3.5自定义值类型,Hibernate允许开发者创建属于他们自己的值类型。 步骤: 创建自定义类型类。该类必须实现org. hibernate. UserType或org. hibernate. CompositeUserType 中的任一个 可以为自定义的类型用标记设置一个简称。 直接在标记的type属性中应用自定义类型即可 注:如果想向自定义类型传递参数,可以在标记中使用元素,但该自定义类型的实现类必须实现org.hibernate.usertype.ParameterizedType接口。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号