关于hibernate实体类序列化问题记录

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
是对象永久化的一种机制。
   确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。
   只有序列化的对象才可以存储在存储设备上。为了对象的序列化而需要继承的接口也只是一个象征性的接口而已,也就是说继承这个接口说明这个对象可以被序列化了,没有其他的目的。之所以需要对象序列化,是因为有时候对象需要在网络上传输,传输的时候需要这种序列化处理,从服务器硬盘上把序列化的对象取出,然后通过网络传到客户端,再由客户端把序列化的对象读入内存,执行相应的处理。
   对象序列化是java的一个特征,通过该特征可以将对象写作一组字节码,当在其他位置读到这些字节码时,可以依此创建一个新的对象,而且新对象的状态与原对象完全相同。为了实现对象序列化,要求必须能够访问类的私有变量,从而保证对象状态能够正确的得以保存和恢复。相应的,对象序列化API能够在对象重建时,将这些值还原给私有的数据成员。这是对java语言访问权限的挑战。通常用在服务器客户端的对象交换上面,另外就是在本机的存储。
   对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 Java应用分层架构及软件模型 1 本章介绍软件的分层结构、关系数据模型和域模型等概念。Hibernate位于持久化层,是域模型和关系数据模型之间的桥梁。 1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 关系数据模型 8 1.2.3 域模型 10 1.2.4 域对象 10 1.2.5 域对象之间的关系 11 1.2.6 域对象的持久化概念 17 1.3 小结 19 1.4 思考题 19 第2章 Java对象持久化技术概述 21 业务数据在内存中表现为实体域对象形式,而在关系数据库中表现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库中。 2.1 直接通过JDBC API来持久化实体域对象 21 .2.2 ORM简介 27 2.2.1 对象-关系映射的概念29 2.2.2 ORM中间件的基本使用方法 31 2.2.3 常用的ORM中间件 33 2.3 实体域对象的其他持久化模式 34 2.3.1 主动域对象模式 35 2.3.2 JDO模式 37 2.3.3 CMP模式 37 2.4 Hibernate API简介 38 2.4.1 Hibernate的核心接口 39 2.4.2 事件处理接口 41 2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate的配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系映射文件 52 3.4.1 映射文件的文档类型定义(DTD) 52 3.4.2 把Customer持久化类映射到CUSTOMERS表 54 3.5 通过Hibernate API操纵数据库 58 3.5.1 Hibernate的初始化 61 3.5.2 访问Hibernate的Session接口 63 3.6 运行helloapp应用 67 3.6.1 创建运行本书范例的系统环境 67 3.6.2 创建helloapp应用的目录结构 72 3.6.3 把helloapp应用作为独立应用程序运行 73 3.6.4 把helloapp应用作为Java Web应用运行 77 3.7 小结 78 3.8 思考题 80 第4章 hbm2java和hbm2ddl工具 83 本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库表 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 93 4.4 运行hbm2ddl工具 94 4.5 使用XML格式的配置文件 96 4.6 小结 97 4.7 思考题 98 第5章 对象-关系映射基础 101 本章主要介绍单个持久化类与单个数据库表之间进行映射的方法,尤其是当持久化类的属性不和数据库表的字段一一对应时的映射技巧。 5.1 持久化类的属性及访问方法 101 5.1.1 基本类型属性和包装类型属性 102 5.1.2 Hibernate访问持久化类属性的策略 104 5.1.3 在持久化类的访问方法中加入程序逻辑 104 5.1.4 设置派生属性 107 5.1.5 控制insert和update语句 108 5.2 处理SQL引用标识符 109 5.3 创建命名策略 110 5.4 设置数据库Schema 112 5.5 设置类的包名 113 5.6 运行本章的范例程序 114 5.7 小结 120 5.8 思考题 121 第6章 映射对象标识符 123 本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 6.1.2 从序列(Sequence)中获取自动增长的标识符 124 6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo标识符生成器 135 6.4.5 native标识符生成器 137 6.5 映射自然主键 138 6.5.1 映射单个自然主键 138 6.5.2 映射复合自然主键 140 6.6 小结 143 6.7 思考题 144 第7章 映射一对多关联关系 147 本章介绍一对多关联关系的映射方法,重点介绍inverse属性和cascade属性的用法。本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 8.2.2 脏检查及清理缓存的机制 184 8.3 Java对象在Hibernate 持久化层的状态 187 8.3.1 临时对象的特征 188 8.3.2 持久化对象的特征 189 8.3.3 被删除对象的特征 190 8.3.4 游离对象的特征 191 8.4 Session接口的详细用法 191 8.4.1 Session的save()和persist()方法 191 8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate()方法 201 8.5 级联操纵对象图 202 8.5.1 级联保存临时对象 206 8.5.2 更新持久化对象 207 8.5.3 持久化临时对象 207 8.5.4 更新游离对象 209 8.5.5 遍历对象图 210 8.6 小结 211 8.7 思考题 211

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值