不過在追蹤原始碼之後,因為 JDBM3 有特別對 serialization 做調校,因此還是想用看看 JDBM3!
使用 JDBM3 時,主要可以分成初次啟動(建立新的檔案)跟開啟之前建好的檔案。
範例如下:
1 2 3 4 5 6 7 8 9 |
String DATABASE = "people" ; String BTREE_NAME = "FamousPeople" ; DB db = DBMaker.openFile(DATABASE ).make(); SortedMap<string, string= "" > tree = null ; if ((tree = db.getTreeMap(BTREE_NAME)) == null ) { tree = db.createTreeMap(BTREE_NAME); } </string,> |
在建立 TreeMap 時,JDBM3 提供兩種 createTreeMap() 的參數
一種是全都用預設值,也就是 createTreeMap(String) 的參數
另一種則是可以自定一些需要的參數,例如可以自定 Comparator、Serialization 等等。
開啟或建立 BTree 的檔案之後,接著就是放資料進去以及取得資料了。
1 2 3 4 5 6 7 |
// Put key. tree.put( "1" , "one" ); tree.put( "2" , "two" ); db.commit(); // Get key. String record = tree.get( "1" ); |
其中第四行呼叫 commit() 是因為資料在透過 put() 放入 BTree 時
實際上預設會放進 JDBM3 的 Dirty Cache,也就是會暫存在記憶體上面
依據 JDBM3 的某處說明(我忘了在哪看到的 XD,可能是原始碼的註解?),應該是 JDBM3 會自動定時把資料寫回磁碟
不過如果需要馬上把資料寫回磁碟,就必須透過 commit() 指令。
最後在 BTree 存取完畢以後,依照 JDBM3 首頁的描述,務必要呼叫 close() 將 BTree 檔案關閉
否則同時有兩個以上的 JDBM3 instance 要存取同一個 BTree 檔案時,可能會發生錯誤。
1 |
db.close(); |
而關於檔案儲存的路徑,JDBM3 的存放位置跟 JDBM 是相同的
可以直接在宣告開啟檔案時,直接給完整路徑,就可以把檔案路徑指到需要的位置了。
1 |
DBMaker dbMaker = DBMaker.openFile(db_name); |
參考資料:
1、JDBM3
2、JDBM
沒有留言:
張貼留言