读书人

开源面向对象数据库 db4o 之旅第 一

发布时间: 2013-02-19 11:11:40 作者: rapoo

开源面向对象数据库 db4o 之旅,第 1 部分: 初识 db4o

前言

业界对持久存储领域的追求从未停止过,为了更方便、更容易地用对象表达我们的思维,开源领域和商业领域都涌现了许多新技术, ORM 的出现恰恰说明了这点。最近一年,业界也在反思,到底 ORM 给我们带来的是便利还是麻烦。矛头指向大名鼎鼎的 Hibernate ,纷纷议论其性能问题,大家似乎要达成这样的共识:“在业务逻辑复杂的地方用 SP ,而一般的 CRUD 还是 Hibernate ”,就连全球知名的 BearingPoint 也有类似看法。下面一个简单的例子,说明了传统 ORM 工具的弊端。让我们考虑一个简单的 Student 对象如清单1:


清单1. Student 类
public class Student { private String name; private int age; public String getName(){ return name; } public int getAge(){ return age; } } 

考虑下面这个场景:找到“年龄小于 20 岁的所有学生”?

使用 ORL 实现如清单2:


清单2. ORL 实现
String oql = "select * from student in AllStudents where student.age <20"; OQLQuery query = new OQLQuery(oql); Object students = query.execute(); 

使用 JDOQL 实现如清单3:


清单3. JDOQL 实现
Query query = persistenceManager.newQuery(Student.class, "age <20"); Collection students = (Collection)query.execute(); 

上面的方法都存在一些普遍问题:

读书人网 >开源软件

热点推荐