利用db4o簡化對象存儲

db4o是一款優秀的面向對象數據庫,German Viscuso最近在DZone上發表了一篇介紹它的文章,該文能夠視爲是db4o在主要語言和框架中的一次巡演html

做爲一個關注Groovy的站點,咱們的興趣固然是其中和Groovy相關的部分:「在Giffon框架中使用db4o」。在這一小節,做者向讀者展現了Griffon的db4o插件。java

在Griffon工程中安裝db4o插件後,會產生兩個文件:Db4oConfig.groovy,包含數據源的定義;BootstrapDb4o.groovy,相似Grails中的BootStrap.groovy。同時,對於控制器,會注入一個名爲withDb4o的動態方法,讓你能夠訪問com.db4o.ObjectContainer實例,經過該對象你能夠對數據庫進行操做。android

簡單的例子由3部分組成:shell

  • 領域類:
    class Person { 
        int id
        String name
        String lastname
    }
  • 在BootstrapDb4o.groovy中初始化數據:
    class BootstrapDb4o {
       def init = { db4o ->
          db4o.store(new Person(id: 1, name: "Danno"
                              , lastname: "Ferrin"))
          db4o.store(new Person(id: 2, name: "Andres"
                              , lastname: "Almiray"))
          db4o.store(new Person(id: 3, name: "James"
                              , lastname: "Williams"))
          db4o.store(new Person(id: 4, name: "Guillaume"
                              , lastname: "Laforge"))
          db4o.store(new Person(id: 5, name: "Jim"
                              , lastname: "Shingler"))
          db4o.store(new Person(id: 6, name: "Josh"
                              , lastname: "Reed"))
          db4o.store(new Person(id: 7, name: "Hamlet"
                              , lastname: "D'Arcy"))
       }
    
       def destroy = { db4o ->
       }
    }
  • 在控制器中查詢數據代碼:
    class SampleController {
       def model
    
       def onStartupEnd = { app ->
          withDb4o { db4o ->
             def tmpList = db4o.query(Person)
             edt { model.personsList.addAll(tmpList) }
          }
       }
    }

雖然Griffon中已經有了db4o插件,但遺憾地是Grails社區如今彷佛並無對應的東西,至少我在Grails官方網站的插件部分沒有搜索到,google的結果也同樣。有人曾表示想集成Grails和db4o,但那也是2008年的往事了。數據庫

此外,在Groovy社區還有另外一個項目:db4o-groovy。該項目提供了:app

  • Db4oBuilder:訪問db4o數據庫的Groovy DSL
  • Db4oGroovyShell和Db4oQueryGroovyShell:相似GrailsShell,對Groovy的標準Shell進行了擴展,提供了經過shell訪問db4o數據庫的功能。

關於該項目的詳情,能夠訪問其官網這篇Blog框架

至於db4o在其餘語言和框架中的應用,請訪問DZone上的原文。你能夠在其中找到在scala、servlet、android和Spring中使用它的例子。網站

相關文章
相關標籤/搜索