`

javabean与serializable

阅读更多
http://wenda.tianya.cn/wenda/thread?tid=69107dac24f05f58

引:无意间找到的,说的很浅显易懂,故引到这里。

Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。这一点甚至在跨网络的环境下也是如此,这就意味着序列化机制能自动补偿操作系统方面的差异。也就是说,你可以在Windows机器上创键一个对象,序列化之后,再通过网络传到Unix机器上,然后在那里进行重建。你不用担心在不同的平台上数据是怎样表示的,byte顺序怎样,或者别的什么细节。
  对象序列化本身就非常有趣,因为它能让你实现"轻量级的persistence(lightweight   persistence)"。所谓persistence是指,对象的生命周期不是由程序是否运行决定的;在程序的两次调用之间对象仍然还活着。通过"将做过序列化处理的对象写入磁盘,等到程序再次运行的时候再把它读出来",你可以达到persistence的效果。之所以说"轻量级",是因为你不能用像"persistent"这样的关键词来直接定义一个对象,然后让系统去处理所有细节(虽然将来有可能会这样)。相反,你必须明确地进行序列化(serialize)和解序列化(deserialize)。如果你需要更为正式的persistence功能,可以考虑Java   Data   Object(   简称是JDO)或Hibernate之类的工具(http://hibernate.sourceforge.net)。
  之所以要在语言里加入对象序列化是因为要用它来实现两个重要的功能。Java的远程方法调用(Remote   Method   Invocation简称RMI)能让你像调用自己机器上的对象那样去调用其它机器上的对象。当你向远程对象传递消息的时候,就需通过对象序列化来传送参数和返回值了。RMI会在Thinking   in   Enterprise   Java作讨论。
  我们会在第14章讲到JavaBean。对JavaBean来说,对象序列化也是必不可少的。Bean的状态信息通常是在设计时配置的。这些状态信息必须保存起来,供程序启动的时候用;对象序列化就负责这个工作。
  序列化一个对象还是比较简单的,只要让它实现Serializable接口就行了(这是一个"标记接口(tagging   interface)",没有任何方法)。但是,当语言引入序列化概念之后,它的很多标准类库的类,包括primitive的wrapper类,所有的容器类,以及别的很多类,都会相应地发生改变。甚至连Class对象都会被序列化。
  要想序列化对象,你必须先创建一个OutputStream,然后把它嵌进ObjectOutputStream。这时,你就能用writeObject(   )方法把对象写入OutputStream了。读的时候,你得把InputStream嵌到ObjectInputStream里面,然后再调用readObject(   )方法。不过这样读出来的,只是一个Object的reference,因此在用之前,还得先下传。
  对象序列化最聪明的一点是,它不仅能保存对象的副本,而且还会跟着对象里面的reference,把它所引用的对象也保存起来,然后再继续跟踪那些对象的reference,以此类推。这种情形常被称为"单个对象所联结的'对象网'"。这个机制所涵盖的范围不仅包括对象的成员数据,而且还包含数组里面的reference。如果你要自己实现对象序列化的话,那么编写跟踪这些链接的程序将会是一件非常痛苦的任务。但是,Java的对象序列化就能精确无误地做到这一点,毫无疑问,它的遍历算法是做过优化的。
分享到:
评论

相关推荐

    mybatis逆向生成javaBean_generatorSqlmapCustom

    mybatis逆向生成javaBean_generatorSqlmapCustom。代码生成

    JSP JavaBean

    接下来给出的是 JavaBean 与其它 Java 类相比而言独一无二的特征: 提供一个默认的无参构造函数。 需要被序列化并且实现了 Serializable 接口。 可能有一系列可读写属性。 可能有一系列的 getter 或 setter ...

    hibernate简介及优缺点

    1.Hibernate持久化类:Hibernate的持久化类是一个JavaBean(pojo+相应属性的getter和setter方法),该JavaBean最好实现java.io.Serializable接口 2.Hibernate映射文件:Hibernate映射文件是Hibernate与数据库进行持久化...

    JAVA与模式

    <br>第一部份、UML和模式介绍 com.javapatterns.uml 统一建模语言UML介绍... com.javapatterns.prototype 原始模型模式 com.javapatterns.serializable 专题:JavaBean的“冷藏”和“解冻”

    源码:阎宏设计模式光盘

    com.javapatterns.serializable 专题:JavaBean的“冷藏”和“解冻” com.javapatterns.servlet 专题:Servlet技术中的模式 com.javapatterns.simplefactory 简单工厂模式 com.javapatterns.singleton 单态模式 ...

    基于Java的XML解析与反射设计模式.doc

    所以在读取大型xml时可以把 xstream与saxparser结合起来使用,用saxparser读取整个xml把核心数据部分让xstrea m来解析成javabean,这样既解决了大数据的问题又利用了xstream快速转化javabean的 优点。 为了利于多...

    jox-1.17b3.jar

    同样,使用本文的JavaBean-XML映射组件,开发人员也不用直接处理与XML有关的APIs。 1.先定义javaBean package com.wutka.jox.test; import com.wutka.jox. * ; import java.util. * ; public class TestBean ...

    jbpm4.4学习笔记

    8.4.1实现了Serializable的JavaBean 29 9流程定义语言 30 9.1process(流程) 30 9.2Transition(连线) 30 9.3节点 30 9.3.1开始节点(start) 30 9.3.2end、end-error、end-canel 31 9.3.3state(状态活动) 31 9.3.4task...

    ssh 万能类分页系统,可复用!

    import java.io.Serializable; import java.util.List; public class PageBean<DUser> implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private List<DUser> list;/...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    简单留言板

    控制器是一个普通的JavaBean. @Mapping("/user") public class UserController { @Parameter private User user; private JsonModel json = new JsonModel(); private UserService userService = new ...

    JAVA面试题最全集

    77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端游标与服务器端游标的区别? 83...

    客户关系管理系统框架搭建(二)

    public class SysUserGroup implements java.io.Serializable { private Integer id; private String remark; // 备注 private String name; // 部门名称 private String principal; // 部门负责...

    Android插件

    它导入Android图标与Material图标的Drawable ,批量导入Drawable ,多源导入Drawable(即导入某张图片各种dpi对应的图片) 14.SelectorChapek for Android 通过资源文件命名自动生成Selector文件。 15....

    最新Java面试宝典pdf版

    或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾...

    Java面试宝典2010版

    又比如这其中用到了一个自己写的javaBean该如何办? 12、在weblogic中发布ejb需涉及到哪些配置文件 13、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置? 14、如何查看在weblogic中...

    Java面试笔试资料大全

    或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾...

    JAVA面试宝典2010

    或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾...

    Java面试宝典-经典

    或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾...

Global site tag (gtag.js) - Google Analytics