db4o使用

db4o-针对对象的数据库-是一个完全的对象数据库;它以使对象在其生命周期中-无论是在数据库内或是在外-都保持着它们的本性这样一种方式操纵对象。不论类的复杂性如何,对象的内容,结构和关系都能够被保存。
    更准确地说,db4o是一个数据库引擎,你只要将它的一个jar文件包含到你的数据库应用的类路径中就可以使用它了(至少对于Java是这样的)。所以,db4o运行在与你的应用程序相同的进程空间中,并能被直接地调用;它不需要类似于在ODBC或JDBC中使用的驱动文件。db4o存在针对Java,.NET和Mono的版本;它们在功能上都彼此相等。(事实上,使用.NET创建的db4o数据库也能由Java程序访问;反之亦然。)
    db4o是开源的。可执行文件,源代码和文档可从http://www.db4objects.com/中下载。广泛的例子程序,和一个活跃的用户社区一样,也都可以从这个站点中找到。
    db4o最引人的特性之一就是它在简易性与强大的功能之间的显著平衡。一方面,它的API是如此地易于掌握和方便使用,即使是初学者也能在相同的时间内创建一个功能完备的数据库对象。另一方面,这些相同的API也提供了更底层的能够深入调用数据库引擎的方法,以允许核心开发者为了得到适当的性能而能深入到该引擎的内部中去调整db4o的工具。
    db4o的特性就是最好的证明--这胜过只是讨论--所以我们将通过示例这种方法去证明db4o。然而,我们必须牢记本文通篇只是展示了db4o特性中的一部分罢了。感兴趣的朋友会发现为了知晓该数据库引擎的全部功能而去查阅db4o的文档所花的时间是值得的。

 

db4o是一款对象数据库,非常的小,使用简单,在最近开发的一个项目中被当做缓存用,感觉还不错。以下是一些简单的入门例子,若想学习更深入的关于db4o的知识,可以到官网上查看文档,文档通俗易懂。

package com.boss.db4;

public class Pilot {    
    private String name;
    private int points;  
    
    public Pilot(String name,int points) {
        this.name=name;
        this.points=points;
    }
        
    public int getPoints() {
        return points;
    }
    
    public void addPoints(int points) {
        this.points+=points;
    }
    
    public String getName() {
        return name;
    }
    
    public String toString() {
        return name+"/"+points;
    }
}

 

package com.boss.db4;

import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;

public class TestDB4 {
	
	public static void main(String[] args) {
		//new TestDB4().createDB4();
		//new TestDB4().storeDB4();
		//new TestDB4().queryByExample();
		//new TestDB4().updateDB4();
		new TestDB4().deleteDB4();
	}
	
	public void createDB4() {
		// accessDb4o
		ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded
		        .newConfiguration(), "TestDB4");
		try {
		    System.out.println("do something....");
		} finally {
		    db.close();
		} 
		System.out.println("end....");
	}
	
	public void storeDB4() {
		ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
		
		try {
			// storeFirstPilot
			Pilot pilot1 = new Pilot("Michael Schumacher", 100);
			db.store(pilot1);
			System.out.println("Stored " + pilot1);
			
			// storeSecondPilot
			Pilot pilot2 = new Pilot("Rubens Barrichello", 99);
			db.store(pilot2);
			System.out.println("Stored " + pilot2); 

		} finally {
		    db.close();
		} 
	}
	
	public void queryByExample() {
		ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
		try {
			// retrieveAllPilotQBE
			/*Pilot proto = new Pilot(null, 0);
			ObjectSet result = db.queryByExample(proto);
			listResult(result); */
			
			// retrievePilotByName
			Pilot proto = new Pilot("Michael Schumacher", 0);
			ObjectSet result = db.queryByExample(proto);
			listResult(result); 
			
			// retrievePilotByExactPoints
			/*Pilot proto = new Pilot(null, 100);
			ObjectSet result = db.queryByExample(proto);
			listResult(result);*/
			
			// retrieveAllPilots
			/*ObjectSet result = db.queryByExample(Pilot.class);
			listResult(result);*/

		} finally {
		    db.close();
		} 
	}
	
	public static void listResult(ObjectSet result) {
	    System.out.println(result.size());
	    while(result.hasNext()) {
	        System.out.println(result.next());
	    }
	} 
	
	public void updateDB4() {
		ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
		try {
			// updatePilot
			ObjectSet result = db
			        .queryByExample(new Pilot("Michael Schumacher", 0));
			Pilot found = (Pilot) result.next();
			found.addPoints(11);
			db.store(found);
			System.out.println("Added 11 points for " + found);
			retrieveAllPilots(db); 

		} finally {
		    db.close();
		} 
	}
	
	public void retrieveAllPilots(ObjectContainer db) {
		try {
			ObjectSet result = db.queryByExample(Pilot.class);
			listResult(result);
		} finally {
		    db.close();
		} 
	}
	
	public void deleteDB4() {
		ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
		try {
			// deleteFirstPilotByName
			ObjectSet result = db
			        .queryByExample(new Pilot("Michael Schumacher", 0));
			Pilot found = (Pilot) result.next();
			db.delete(found);
			System.out.println("Deleted " + found);
			retrieveAllPilots(db);
			
			// deleteSecondPilotByName
			/*ObjectSet result = db
			        .queryByExample(new Pilot("Rubens Barrichello", 0));
			Pilot found = (Pilot) result.next();
			db.delete(found);
			System.out.println("Deleted " + found);
			retrieveAllPilots(db); */


		} finally {
		    db.close();
		} 
	}

	
	
	


}

 

 

 

你可能感兴趣的:(数据结构,.net,jdbc)