大梦想家

5年开发工程师,2年实施经理,X年售前顾问,......
数据加载中……
初识DB4O
    DB4O?
    新出的OODBMS~取谐音DB for O 。一个优秀的OODBMS解决方案,它出现的定位就是为了开发嵌入式和小型应用,同HSQLDB的定位相仿。不过DB4O的的优点则是,本身是OODBMS,那么对它的操作自然就是基于OO的,同Hiberante一样,但是Hiberante是ORM解决方案,而DB4O则是原生OODBMS方案。看看下面的例子

一个同Hibernate相同的POJO,没有任何方法,也没有跟DB4O有任何耦合。
 1package name.lgn.db4o.test.model;
 2
 3public class Person {
 4
 5    private String firstName;
 6
 7    private String lastName;
 8
 9    private int age;
10
11    public Person(String firstName, String lastName, int age) {
12        this.firstName = firstName;
13        this.lastName = lastName;
14        this.age = age;
15    }

16
17    public String getFirstName() {
18        return firstName;
19    }

20
21    public void setFirstName(String value) {
22        firstName = value;
23    }

24
25    public String getLastName() {
26        return lastName;
27    }

28
29    public void setLastName(String value) {
30        lastName = value;
31    }

32
33    public int getAge() {
34        return age;
35    }

36
37    public void setAge(int value) {
38        age = value;
39    }

40
41}

42

在看,DB4O的解决方案:
 1package name.lgn.db4o.test;
 2
 3import name.lgn.db4o.test.model.Person;
 4
 5import org.junit.Test;
 6
 7import com.db4o.Db4o;
 8import com.db4o.ObjectContainer;
 9import com.db4o.ObjectSet;
10
11public class TestDB4O {
12
13    @Test
14    public void testDB() {
15        ObjectContainer db = null;
16        try {
17            db = Db4o.openFile("persons.data");
18
19            Person brian = new Person("Brian""Goetz"39);
20            Person jason = new Person("Jason""Hunter"35);
21            Person clinton = new Person("Brian""Sletten"38);
22            Person david = new Person("David""Geary"55);
23            Person glenn = new Person("Glenn""Vanderberg"40);
24            Person neal = new Person("Neal""Ford"39);
25
26            db.set(brian);
27            db.set(jason);
28            db.set(clinton);
29            db.set(david);
30            db.set(glenn);
31            db.set(neal);
32
33            db.commit();
34
35            // Find all the Brians
36            ObjectSet brians = db.get(new Person("Brian"null0));
37            while (brians.hasNext())
38                System.out.println(brians.next());
39
40        }
 catch (Exception e) {
41            e.printStackTrace();
42        }
 finally {
43            if (db != null)
44                db.close();
45        }

46
47    }

48}

49
存入数据用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 的开源对象数据库。

客户虐我千百遍,我待客户如初恋!

posted on 2007-06-10 11:15 阿南 阅读(1813) 评论(11)  编辑  收藏 所属分类: DB4O

评论

# re: 初识DB4O 2007-06-10 11:42 itkui

不错,现在轻量级框架越来越火了。
  回复  更多评论    

# re: 初识DB4O 2007-06-10 16:42 Pande

db4o是不错,可惜他的License不够友好
  回复  更多评论    

# re: 初识DB4O 2007-06-10 17:18 阿南

确实限制不少,是一家开源的公司做的~毕竟人家也是要吃饭的啊~
  回复  更多评论    

# re: 初识DB4O 2007-07-25 16:11 kujioon

不错,但是它是数据是存储在哪儿呢?
  回复  更多评论    

# re: 初识DB4O 2007-07-25 16:12 kujioon

persons.data这是一个文件,这个名字有什么约定吗,文件存储在哪儿?
  回复  更多评论    

# re: 初识DB4O 2007-07-25 19:44 阿南

存在本地,其实就是本地一份文件!文件名没有什么限制
  回复  更多评论    

# re: 初识DB4O 2011-01-08 08:38 replica watch

存在本地,其实就是本地一份文件!文件名没有什么限制
  回复  更多评论    

# shox nz 2011-06-09 17:21 shox nz

that's good,
  回复  更多评论    

# Christian Louboutin Platform[未登录] 2011-09-02 13:45 yoyo

it is a interesting one.
  回复  更多评论    

# Christian Louboutin Platform[未登录] 2011-09-02 13:46 yoyo

why is so?
  回复  更多评论    

# re: 初识DB4O 2013-01-18 11:13 replica montblanc watches

存在本地,其实就是本地一份文件!文件名没有什么限制
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: