利用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中使用它的例子。网站

相关文章
相关标签/搜索