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做個例子就知道了。