初识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
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 @Test14 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 “ , null , 0 )); 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 的开源对象数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162593.html 原文链接:https://javaforall.net