天天看點

hibernate pojo類 實作serializable接口

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