不過在追蹤原始碼之後,因為 JDBM3 有特別對 serialization 做調校,因此還是想用看看 JDBM3!
使用 JDBM3 時,主要可以分成初次啟動(建立新的檔案)跟開啟之前建好的檔案。
範例如下:
String DATABASE = "people"; String BTREE_NAME = "FamousPeople"; DB db = DBMaker.openFile(DATABASE ).make(); SortedMaptree = null; if((tree = db.getTreeMap(BTREE_NAME)) == null) { tree = db.createTreeMap(BTREE_NAME); }
在建立 TreeMap 時,JDBM3 提供兩種 createTreeMap() 的參數
一種是全都用預設值,也就是 createTreeMap(String) 的參數
另一種則是可以自定一些需要的參數,例如可以自定 Comparator、Serialization 等等。
開啟或建立 BTree 的檔案之後,接著就是放資料進去以及取得資料了。
// 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 檔案時,可能會發生錯誤。
db.close();
而關於檔案儲存的路徑,JDBM3 的存放位置跟 JDBM 是相同的
可以直接在宣告開啟檔案時,直接給完整路徑,就可以把檔案路徑指到需要的位置了。
DBMaker dbMaker = DBMaker.openFile(db_name);
參考資料:
1、JDBM3
2、JDBM
沒有留言:
張貼留言