課程
/后端開發(fā)
/Java
/HQL數(shù)據(jù)查詢基礎(chǔ)
為什么實體類需要序列化?
2017-01-05
源自:HQL數(shù)據(jù)查詢基礎(chǔ) 3-4
正在回答
序列化 (Serialization)將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間,對象將其當(dāng)前狀態(tài)寫入到臨時或持久性存儲區(qū)。以后,可以通過從存儲區(qū)中讀取或反序列化對象的狀態(tài),重新創(chuàng)建該對象。序列化使其他代碼可以查看或修改,那些不序列化便無法訪問的對象實例數(shù)據(jù)。最終達(dá)到的目的是:1、以某種存儲形式使自定義對象持久化;2、將對象從一個地方傳遞到另一個地方。3、使程序更具維護性
快樂不假 提問者
舉個例子,你編寫了一款游戲,保存記錄時把所有狀態(tài)一一保存非常麻煩,這時就可以使用Serializable(序列化接口),它的作用是可以將一個對象實例序列化,序列化后你可以選擇將它保存在你需要的位置。?
相對的,讀取后生成的對象所有屬性(除了設(shè)置為瞬時值的屬性)將和原對象的屬性相同(只是內(nèi)存地址不同)。?
這樣可以方便的將一個java對象寫入到磁盤中,保存該對象的所有狀態(tài)!?
值得注意的是序列化的對象中包含的屬性和其他對象都需要實現(xiàn)序列化接口,不然無法正常序列化!?
在hibernate里,并非所有的實體類必須實現(xiàn)序列化接口,因為在hibernate中我們通常是將基本類型的數(shù)值映射為數(shù)據(jù)庫中的字段。而基礎(chǔ)類型都實現(xiàn)了序列化接口(String也實現(xiàn)了)。?
所以,只有在想將一個對象完整存進(jìn)數(shù)據(jù)庫(存儲為二進(jìn)制碼),而不是將對象的屬性分別存進(jìn)數(shù)據(jù)庫,讀取時再重新構(gòu)建的話,就可以不用實現(xiàn)序列化接口。實現(xiàn)了Serializable,可以方便保存數(shù)據(jù)。
保存一個對象到數(shù)據(jù)庫?方便保存?
對象序列化可以把java對象轉(zhuǎn)變?yōu)槎M(jìn)制用于數(shù)據(jù)傳輸,而hibernate要求這樣做的目的,是因為hibernate源碼中的需要。
舉報
使用HQL從數(shù)據(jù)庫中找到你要的數(shù)據(jù),掌握了使用Hibernate
1 回答創(chuàng)建實體類主鍵id為int 和integer有什么區(qū)別
2 回答為什么map類型的在for循環(huán)時打印的時候需要放下標(biāo), 而自定義類型時在for循環(huán)中不用放
2 回答java中有多個相同的持久化類類名
1 回答類的屬性修改了,是不是映射文件和數(shù)據(jù)庫都需要修改?
1 回答HQL中自定義類型不能使用類的別名,會報錯為什么埃
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-06-24
序列化 (Serialization)將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間,對象將其當(dāng)前狀態(tài)寫入到臨時或持久性存儲區(qū)。以后,可以通過從存儲區(qū)中讀取或反序列化對象的狀態(tài),重新創(chuàng)建該對象。序列化使其他代碼可以查看或修改,那些不序列化便無法訪問的對象實例數(shù)據(jù)。最終達(dá)到的目的是:1、以某種存儲形式使自定義對象持久化;2、將對象從一個地方傳遞到另一個地方。3、使程序更具維護性
2017-01-05
舉個例子,你編寫了一款游戲,保存記錄時把所有狀態(tài)一一保存非常麻煩,這時就可以使用Serializable(序列化接口),它的作用是可以將一個對象實例序列化,序列化后你可以選擇將它保存在你需要的位置。?
相對的,讀取后生成的對象所有屬性(除了設(shè)置為瞬時值的屬性)將和原對象的屬性相同(只是內(nèi)存地址不同)。?
這樣可以方便的將一個java對象寫入到磁盤中,保存該對象的所有狀態(tài)!?
值得注意的是序列化的對象中包含的屬性和其他對象都需要實現(xiàn)序列化接口,不然無法正常序列化!?
在hibernate里,并非所有的實體類必須實現(xiàn)序列化接口,因為在hibernate中我們通常是將基本類型的數(shù)值映射為數(shù)據(jù)庫中的字段。而基礎(chǔ)類型都實現(xiàn)了序列化接口(String也實現(xiàn)了)。?
所以,只有在想將一個對象完整存進(jìn)數(shù)據(jù)庫(存儲為二進(jìn)制碼),而不是將對象的屬性分別存進(jìn)數(shù)據(jù)庫,讀取時再重新構(gòu)建的話,就可以不用實現(xiàn)序列化接口。實現(xiàn)了Serializable,可以方便保存數(shù)據(jù)。
保存一個對象到數(shù)據(jù)庫?方便保存?
2017-01-05
對象序列化可以把java對象轉(zhuǎn)變?yōu)槎M(jìn)制用于數(shù)據(jù)傳輸,而hibernate要求這樣做的目的,是因為hibernate源碼中的需要。