2008-12-15 69 views
0

我正在使用jdbc與我的db一起工作。 我想直接在db,oracle中存儲一個HashMap。 我想我需要序列化的地圖,及其內容,這只是字符串。 Map已經實現了Serializeable,但我的問題是我如何使用jdbc將Map放入SQL中? 例如,我有一個jdbcTemplate.update(「insert into ....」,new Object [] {....},new int [] {....}) 我只是把地圖放入對象數組? 謝謝將java映射序列化爲db

回答

2

您需要使用鍵/值列的表,如果你存儲多個地圖,標識列檢索(或者一個外鍵保存到另一個保存hashmap所屬數據的表)。

然後在JDBC中,創建一個準備語句(insert into myhashmap(id,foreign_id,key,val)values(?,?,?,?))ONCE,然後遍歷hashmap中的每個元素,設置在語句上調用參數並在查詢上調用執行。

(對不起,沒有附近的任何代碼發佈代碼片段,不想輸入錯誤的例子)。

這也可以簡單地擴展到String - > Object的映射,您希望在DB中存儲Object中的每個字段。也就是說,它基本上就像數據庫中的一個標準表,還有一個「關鍵」列。列表類似,但具有「排列」列以指示排序。

+0

這是一種比BLOB方法好得多的方法,因爲您將能夠讀取和處理數據庫中的數據,而不僅僅是在Java應用程序中。在Java發行版之間,Java庫的版本ID會發生變化,所以您的序列化可能不適用於較新版本或舊版本的Java。 – hromanko 2008-12-15 23:09:59

0

我過去的做法是在表中創建一列來存儲序列化對象。 Oracle中的數據類型應該是「blob」或等效的。

它可以寫/使用ResultSet.setBytes()和ResultSet.getBytes()

相關問題