初识DB4O「建议收藏」

初识DB4O「建议收藏」   DB4O?   新出的OODBMS~取谐音DBforO。一个优秀的OODBMS解决方案,它出现的定位就是为了开发嵌入式和小型应用,同HSQLDB的定位相仿。不过DB4O的的优点则是,本身是OODBMS,那么对它的操作自然就是基于OO的,同Hiberante一样,但是Hiberante是ORM解决方案,而DB4O则是原生OODBMS方案。看看下面的例子一个同Hibernate相同的P…

大家好,又见面了,我是你们的朋友全栈君。    DB4O?

    新出的OODBMS~取谐音DB for O 。一个优秀的OODBMS解决方案,它出现的定位就是为了开发嵌入式和小型应用,同HSQLDB的定位相仿。不过DB4O的的优点则是,本身是OODBMS,那么对它的操作自然就是基于OO的,同Hiberante一样,但是Hiberante是ORM解决方案,而DB4O则是原生OODBMS方案。看看下面的例子

一个同Hibernate相同的POJO,没有任何方法,也没有跟DB4O有任何耦合。

 1
None.gif
package
 name.lgn.db4o.test.model;

 2
None.gif

 3
ExpandedBlockStart.gifContractedBlock.gif
public
 
class
 Person 
dot.gif
{

 4InBlock.gif
 5InBlock.gif    private String firstName;
 6InBlock.gif
 7InBlock.gif    private String lastName;
 8InBlock.gif
 9InBlock.gif    private int age;
10InBlock.gif
11ExpandedSubBlockStart.gifContractedSubBlock.gif    public Person(String firstName, String lastName, int age) dot.gif{

12InBlock.gif        this.firstName = firstName;
13InBlock.gif        this.lastName = lastName;
14InBlock.gif        this.age = age;
15ExpandedSubBlockEnd.gif    }

16InBlock.gif
17ExpandedSubBlockStart.gifContractedSubBlock.gif    public String getFirstName() dot.gif{

18InBlock.gif        return firstName;
19ExpandedSubBlockEnd.gif    }

20InBlock.gif
21ExpandedSubBlockStart.gifContractedSubBlock.gif    public void setFirstName(String value) dot.gif{

22InBlock.gif        firstName = value;
23ExpandedSubBlockEnd.gif    }

24InBlock.gif
25ExpandedSubBlockStart.gifContractedSubBlock.gif    public String getLastName() dot.gif{

26InBlock.gif        return lastName;
27ExpandedSubBlockEnd.gif    }

28InBlock.gif
29ExpandedSubBlockStart.gifContractedSubBlock.gif    public void setLastName(String value) dot.gif{

30InBlock.gif        lastName = value;
31ExpandedSubBlockEnd.gif    }

32InBlock.gif
33ExpandedSubBlockStart.gifContractedSubBlock.gif    public int getAge() dot.gif{

34InBlock.gif        return age;
35ExpandedSubBlockEnd.gif    }

36InBlock.gif
37ExpandedSubBlockStart.gifContractedSubBlock.gif    public void setAge(int value) dot.gif{

38InBlock.gif        age = value;
39ExpandedSubBlockEnd.gif    }

40InBlock.gif
41ExpandedBlockEnd.gif}



42
None.gif

在看,DB4O的解决方案:

 1
None.gif
package
 name.lgn.db4o.test;

 2
None.gif

 3
None.gif
import
 name.lgn.db4o.test.model.Person;

 4
None.gif

 5
None.gif
import
 org.junit.Test;

 6
None.gif

 7
None.gif
import
 com.db4o.Db4o;

 8
None.gif
import
 com.db4o.ObjectContainer;

 9
None.gif
import
 com.db4o.ObjectSet;

10
None.gif

11
ExpandedBlockStart.gifContractedBlock.gif
public
 
class
 TestDB4O 
dot.gif
{

12InBlock.gif
13InBlock.gif    @Test
14ExpandedSubBlockStart.gifContractedSubBlock.gif    public void testDB() dot.gif{

15InBlock.gif        ObjectContainer db = null;
16ExpandedSubBlockStart.gifContractedSubBlock.gif        try dot.gif{

17InBlock.gif            db = Db4o.openFile(persons.data);
18InBlock.gif
19InBlock.gif            Person brian = new Person(BrianGoetz39);
20InBlock.gif            Person jason = new Person(JasonHunter35);
21InBlock.gif            Person clinton = new Person(BrianSletten38);
22InBlock.gif            Person david = new Person(DavidGeary55);
23InBlock.gif            Person glenn = new Person(GlennVanderberg40);
24InBlock.gif            Person neal = new Person(NealFord39);
25InBlock.gif
26InBlock.gif            db.set(brian);
27InBlock.gif            db.set(jason);
28InBlock.gif            db.set(clinton);
29InBlock.gif            db.set(david);
30InBlock.gif            db.set(glenn);
31InBlock.gif            db.set(neal);
32InBlock.gif
33InBlock.gif            db.commit();
34InBlock.gif
35InBlock.gif            // Find all the Brians
36InBlock.gif            ObjectSet brians = db.get(new Person(Briannull0));
37InBlock.gif            while (brians.hasNext())
38InBlock.gif                System.out.println(brians.next());
39InBlock.gif
40ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (Exception e) dot.gif{

41InBlock.gif            e.printStackTrace();
42ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 finally dot.gif{

43InBlock.gif            if (db != null)
44InBlock.gif                db.close();
45ExpandedSubBlockEnd.gif        }

46InBlock.gif
47ExpandedSubBlockEnd.gif    }

48ExpandedBlockEnd.gif}



49
None.gif

存入数据用db.set(…);取出数据用db.get(…),是不是非常亲切和简单?

    对于不需要使用大型DB,但又需要存储数据的时候不需要再用hibernate+hsqldb了,只需要使用DB4O,就全带了,又有简单的数据库操作,又有数据的存储,还有数据完整性的保证,简单方便,何乐不为呢?RCP开源项目著名的RSSOWL在2.0中也已经把原有的hiberante+hsqldb替换为DB4O的解决方案了。

    虽然OODBMS的路还有很长,而且就现在看,和RDBMS还有很长的距离,但是从DB4O上,我们还是看到了希望。在DB4O的眼中Hibernate,jdo等等都是暂时的解决方案,对于OODBMS来说ORM本来就是不存在的东西,ORM仅仅是为了解决RDBMS到OO的映射,而OODBMS本来就是原生的,免去了中间层,免去了烦恼。

下载 db4o:这是一种用于 Java 的开源对象数据库。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162593.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php中while没有大括号[通俗易懂]

    php中while没有大括号

    2022年2月11日
    44
  • svn服务器文件保存位置,Windows 部署SVN服务器

    svn服务器文件保存位置,Windows 部署SVN服务器一、准备在Windows系统安装完成后,就可以搭建SVN服务器了。需要准备以下软件:VisualSVN-Server-3.9.0-x64.msi–SVN服务器软件二、VisualSVNServer安装1.双击VisualSVN-Server-3.9.0-x64.msi准备安装,点击“Next”image.png2.接受许可协议,点击“Next”ima…

    2022年7月19日
    15
  • SQL like子查询

    SQL like子查询like子查询字符匹配:%(百分号)任意字长度(可以为0)的字符_(下横线)代表任意单个字符eg:a%b表示以a开头,以b结尾的任意长度的字符。三个常用的字符串截取函数:substr(column,1,n)left(column,n)right(column,n)str=’abcdefg’substr(str,1,3):’bcd’left(s…

    2022年7月13日
    58
  • linux下tomcat安装及配置教程

    linux下tomcat安装及配置教程tomcat是一款java语言servlet规范的服务器软件,如下的经验讲述如何使用linux环境下tomcat的安装和配置。工具/原料Linuxtomcat方法/步骤1下载tomcat压缩包如第一张图如果你是服务器linux,可以通过软件本地上传文件导linux服务器如图二也可也通过下面linux命令下载:2新建目录,并解压Tomcat软件的压缩包命令:tar…

    2022年5月31日
    357
  • 阿里云API接口调用[通俗易懂]

    阿里云API接口调用[通俗易懂]阿里云针对自己的平台提供了非常丰富的API接口,而且他们有提供openapi可视化服务,非常方便。阿里云openapi地址:https://api.aliyun.com/这里我在查询全部RDS资产

    2022年7月3日
    85
  • js数组字符串转数组对象_js数组对象排序

    js数组字符串转数组对象_js数组对象排序js对象使用<script>//js对象是一种无序的集合{}表示varobj={name:”张三”,age:18}//取值console.log(obj.name)//张三console.log(obj[“name”])/…

    2022年9月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号