瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          db4o 轉載

          Posted on 2010-01-12 15:45 瘋狂 閱讀(1368) 評論(0)  編輯  收藏

          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代碼(表名、表創建命令等):
          image
          而下面是等價的db4o代碼:
          image
          正如你所看到的,在db4o中無需預定義schema(你可以將db4o對象模式當作schema使用,并且在這種對象模型下進行重構是非常優雅的,甚至在一些簡單的情況下是自動化的)。

          數據庫打開和創建機制

          在SQLite中,你需要調用兩種不同的方法,一種是創建數據庫,另一種是打開數據庫:
          image
          而在db4o中,你只需要調用openFile(),它將根據數據庫是否存在來創建或者打開數據庫:
          image
          也許這里的差別看起來無關緊要,但更簡短的代碼才是更清晰的代碼!

          更新和插入數據

          使用關系數據庫SQLite時,你需要根據具體情況傳送插入或更新命令(完全正確地構造反射數據表字段的SQL字符串確并非易事):
          image
          這里是等價的db4o代碼:
          image
          你是否發現了不同?db4o實際上是一種單行代碼(one-line-of-code)的存儲數據庫。db4o自動檢查對象是新的還是已存在的,并根據對象狀態進行更新或者插入(我們只需要調用set操作)。值得注意的是,在上面的代碼中我們手工提供了對象的新id,而db4o是可以將其配置為自增字段的。

          查詢所有記錄

          在SQLite中,我們不得不進行人工的對象關系映射:
          image
          而在db4o中,我們完全可以忘掉關系映射:
          image
          請注意:在上面簡短的查詢中,我們通過db4o的SODA查詢了全部PassEntry對象,并將結果按照"id"字段進行排序(在上面的SQLite示例中沒有排序)。

          它不能再簡單了!

          通過字段查詢單一記錄

          通過Id查詢記錄的SQLite版本:
          image
          下面是db4o版本,它使用了db4o三種查詢系統之一------Exmaple(也稱為QBE)代替前面的SODA進行查詢:
          image
          可以看出這是多么短小、清晰的代碼啊!

          結論

          我希望你已經通過以上短小的文檔了解到了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


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 上饶县| 紫阳县| 房产| 鞍山市| 资中县| 南宫市| 田阳县| 沈阳市| 德格县| 湟源县| 新龙县| 广河县| 朝阳市| 闻喜县| 松溪县| 海伦市| 乌拉特前旗| 泸州市| 增城市| 扶绥县| 浦北县| 肇庆市| 烟台市| 达拉特旗| 丰宁| 息烽县| 鸡西市| 喀什市| 衡阳县| 凉山| 确山县| 濉溪县| 巫溪县| 泰宁县| 新竹县| 南平市| 开封县| 沁阳市| 织金县| 文昌市| 宣汉县|