Object serialization的定义:
Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。 其实实现不实现要根据你的需求而定,有些时候主要是为了能够让代码有更好的适应性。hibernate虽然不需要序列化,但是可能在其他环境下是需要的
serialization 不但可以在本机做,而且可以经由网络操作(就是猫小说的RMI, Remote Method Invocation,远程方法调用 )。这个好处是很大的----因为它自动屏蔽了操作系统的差异,字节顺序(用Unix下的c 开发过网络编程的人应该知道这个概念,我就容易在这上面犯错)等。比如,在Window平台生成一个对象并序列化之,然后通过网络传到一台Unix机器 上,然后可以在这台Unix机器上正确地重构这个对象。
Object serialization主要用来支持2种主要的特性:
1。Java的RMI(remote method invocation).RMI允许象在本机上一样操作远程机器上的对象。当发送消息给远程对象时,就需要用到serializaiton机制来发送参数和接收返回直。
2。Java的JavaBeans. Bean的状态信息通常是在设计时配置的。Bean的状态信息必须被存起来,以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制。
补充一下。
分布式环境主要是要将Object转成binary然后在中间件中传输。如:
DB - Hibernate - Application Server - Application。
举个简单例子,要在EJB里用hibernate就必须Serialization,否则传不过去。
但如果没有Application Server就不需要Serialization了。如:
DB - Hibernate - Application。
但要澄清一下:
A DB - Hibernate - Servlet 用到AS,但Object直接传POJO对象,不需要 序列化
其实Hibernate本身跟序列化没有什么关系的。序列化重要是为了将Object转成binary。如果你用ObjectInputStream做个例子就知道了。