db4o 轉載 - 瘋狂 --專注java,開源,架構,項目管理 - BlogJava
Android與db4o的完美結合-Password Manager
項目簡介
這里提供的 Password Manager項目 是Steven Osborn編寫的 PasswordSafe (在Apache License下發行)的改寫版,目前已經實現了在 Android 平臺下的基本密碼管理功能。項目源代碼中使用db4o代替了SQLite,這樣不但使持久化處理更為直觀,而且使開發過程更快速、整個應用更加高效。
在這個項目中,你可以獲得以下資源:
????* db4o與SQLite之間在基本持久化操作上的比較
????* 完整的Android示例應用代碼
????* 應用運行時的視頻演示
基本功能
本應用基本功能是安全地保存網站登錄信息,例如URL、用戶名、密碼,它使用128位AES加密算法。使用者必需提供正確的密碼才能訪問應用,而密碼被用于加密/解密應用數據。
這里提供了采用db4o技術的Password Manager在Android模擬器下運行的在線視頻:
http://www.youtube.com/watch?v=UFSD44AcBwM
如果你下載了源代碼(請見本頁末尾的詳細說明),那么你會看到原來PasswordSafe中的DBHepler類(實現SQLite下的持久化)已經被替換為Db4oHelper類(實現db4o的持久化)。現在,就讓我為你展示db4o和SQLite在持久化處理上的不同之處吧。
SQL初始化開銷
這是你需要在SQLite下初始化密碼管理器SQL代碼(表名、表創建命令等):
而下面是等價的db4o代碼:
正如你所看到的,在db4o中無需預定義schema(你可以將db4o對象模式當作schema使用,并且 在這種對象模型下進行重構是非常優雅的 ,甚至 在一些簡單的情況下是自動化的 )。
數據庫打開和創建機制
在SQLite中,你需要調用兩種不同的方法,一種是創建數據庫,另一種是打開數據庫:
而在db4o中,你只需要調用openFile(),它將根據數據庫是否存在來創建或者打開數據庫:
也許這里的差別看起來無關緊要,但更簡短的代碼才是更清晰的代碼!
更新和插入數據
使用關系數據庫SQLite時,你需要根據具體情況傳送插入或更新命令(完全正確地構造反射數據表字段的SQL字符串確并非易事):
這里是等價的db4o代碼:
你是否發現了不同?db4o實際上是一種單行代碼(one-line-of-code)的存儲數據庫。db4o自動檢查對象是新的還是已存在的,并根據對象狀態進行更新或者插入(我們只需要調用set操作)。值得注意的是,在上面的代碼中我們手工提供了對象的新id,而db4o是可以將其配置為自增字段的。
查詢所有記錄
在SQLite中,我們不得不進行人工的對象關系映射:
而在db4o中,我們完全可以忘掉關系映射:
請注意:在上面簡短的查詢中,我們通過db4o的 SODA 查詢了全部PassEntry對象,并將結果按照"id"字段進行排序(在上面的SQLite示例中沒有排序)。
它不能再簡單了!
通過字段查詢單一記錄
通過Id查詢記錄的SQLite版本:
下面是db4o版本,它使用了 db4o三種查詢系統 之一------ Exmaple(也稱為QBE) 代替前面的 SODA 進行查詢:
可以看出這是多么短小、清晰的代碼啊!
結論
我希望你已經通過以上短小的文檔了解到了db4o的優點。你希望在應用中將持久化提升到一個新的高度嗎?請現在就 下載db4oJava版本或者.NET版本 吧!它是免費的!
相關資源
????* db4o指南
????* 安裝向導
????* 開發者資源
TODO
????* 使用XTEA替換自定義加密算法(XTEA能夠提供數據庫級別加密和IO加密,而不是字段級加密)
????* 提供檢索功能(為了按名稱進行過濾)
Steve的PasswordSafe項目發布在Google Code上,那里有更多的TODO:
http://code.google.com/p/android-passwordsafe/issues/
Bugs
????* 在密碼記錄編輯器中嘗試編輯website輸入框中的URL時會發生錯誤。
源代碼下載
???? Db4oAndroidPswMgr.Zip
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
