打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
初识DB4O - 实践-全程 - BlogJava


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

一个同Hibernate相同的POJO,没有任何方法,也没有跟DB4O有任何耦合。
 1
package name.lgn.db4o.test.model;
 2

 3
public 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的解决方案:
 1
package name.lgn.db4o.test;
 2

 3
import name.lgn.db4o.test.model.Person;
 4

 5
import org.junit.Test;
 6

 7
import com.db4o.Db4o;
 8
import com.db4o.ObjectContainer;
 9
import com.db4o.ObjectSet;
10

11
public 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 的开源对象数据库。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JAVA对象比较器Comparator
关于Java中static关键字的用法以及从内存角度解析
怎样对带有不可序列化属性的Java对象进行序列化
您不知道的 5 件事……: Java Collections API,第 2 部分
JPA的Embeddable Objects - LalfaShi‘Blog
PropertyGrid Refresh problem...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服