实践-全程

预测未来的最好办法,就是把它创造出来 --- 阿伦.凯
数据加载中……
初识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 的开源对象数据库。

声明:  
  本BLOG内的所有文章,未经特别说明,均采用“署名-非商业性使用-禁止演绎 2.5 中国大陆”授权。任何违反本协议的行为均属于非法行为。如需非商业性转载,请保留署名。如需商业性转载出版,请直接和我联系。

Creative Commons License

posted on 2007-06-10 11:15 阿南 阅读(1267) 评论(6)  编辑  收藏 所属分类: 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 阿南

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



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交