db4o对象型数据库学习笔记
作者:网络转载 发布时间:[ 2013/5/31 10:13:34 ] 推荐标签:
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种高效率的标准查询方式!
public class TestDb4o {
private static ObjectContainer db = null;
public static void main(String args[]){
openLocalDb();
System.out.println("--running--");
//queryForQBE(db);
//queryForSODA(db);
queryForNQ(db);
closeDb();
//openServer(1233,"admin","1");
//System.out.println("--running--");
}
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);
}
/**
* QBE查询方式 : Query By Example
* @param ocdb
*/
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(); //5.0 才支持自动装箱
System.out.println(c);
}
}
/**
* 启动服务
* @param port
* @param userName
* @param password
*/
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();
}
/**
* 打开服务
* @param IPaddress
* @param userName
* @param password
* @param port
*/
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();
}
}

sales@spasvo.com