db4o(database for object ) 是一个开源的,面向对象的数据库.
现在有很多的在传统数据库上建立持久关系和ORM影射的工具.
对于ORM,有很多中说法:
"业界对持久存储领域的追求从未停止过,为了更方便、更容易地用对象表达我们的思维,开源领域和商业领域都涌现了许多新技术, ORM 的出现恰恰说明了这点。最近一年,业界也在反思,到底 ORM 给我们带来的是便利还是麻烦。矛头指向大名鼎鼎的 Hibernate ,纷纷议论其性能问题,大家似乎要达成这样的共识:“在业务逻辑复杂的地方用 SP ,而一般的 CRUD 还是 Hibernate ”,就连全球知名的 BearingPoint 也有类似看法。"
呵呵,db4o 确实一个新的直接应用了orm的数据库...
花了半天时间,终于把最基本的应用搞懂了,最兴奋的莫过于:他不但支持 本地访问,还支持网络访问,嵌入式开发.
而且是开源的,免费的.for JDKV1.4的总大小只有600多k,呵呵正好应用于我想搞的一个手机软件上,哈哈~~~
不多说了,学习笔记记下来:
1- 数据库下载地址: www.db4o.com 这个是官方网站,上去找最新的版本吧
2- object manager:对象管理器,这个是数据库管理的UI工具,也在 www.db4o.com 里有下载,有两种版本的
3- 经过测试 db4o的效率比普通的 ORM工具要高出很多:
"db4o 官方公布的基准测试数据,db4o 比采用 Hibernate/MySQL 方案在某些测试线路上速度高出 44 倍之多!并且安装简单,仅仅需要 400Kb 左右的 .jar 或 .dll 库文件。"
下面还是给出最简单的测试学习代码:
呵呵,非常简单的,而且支持3种高效率的标准查询方式!
java 代码
- public class TestDb4o {
-
- private static ObjectContainer db = null;
-
-
- public static void main(String args[]){
- openLocalDb();
- System.out.println("--running--");
-
-
- queryForNQ(db);
- closeDb();
-
-
- }
-
- public static void queryForNQ(ObjectContainer ocdb){
- List list = db.query(
- new Predicate() {
- public boolean match(Car car) {
- return car.getColor().equals("BLUE");
- }
- }
- );
- outPutList(list);
- }
-
-
- public static void queryForSODA(ObjectContainer ocdb){
- Query q = ocdb.query();
-
- q.constrain(Car.class);
- q.descend("name").constrain("宝马");
- List l = q.execute();
- outPutList(l);
- }
-
-
-
-
-
- public static void queryForQBE(ObjectContainer ocdb){
- Car car = new Car();
- car.setColor("BLUE");
- List l = ocdb.get(car);
- outPutList(l);
- }
-
- public static void outPutList(List list){
- for(Iterator it=list.iterator();it.hasNext();){
- Car c = (Car)it.next();
- System.out.println(c);
- }
- }
-
-
-
-
-
-
-
- public static void openServer(int port,String userName,String password){
- ObjectServer server=Db4o.openServer("D:/DB4O_TDB01.yap",port);
- server.grantAccess(userName,password);
- server.openClient();
- }
-
-
-
-
-
-
-
-
- public static void openClient(String IPaddress,String userName,String password,int port){
- try {
- db=Db4o.openClient(IPaddress,port,userName,password);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
-
-
- public static void openLocalDb(){
- db = Db4o.openFile("D:/DB4O_TDB01.yap");
- }
-
-
-
-
-
- public static void closeDb(){
- if(db!=null) db.close();
- }
- }