初试DB4O

初试DB4O

面向对象的数据库,大致照着例子用了一下。要用好还要继续研究咯。
下载地址是:
http://www.db4o.com/
写了一个DEMO,DB4OService.java:
package com.sillycat.plugin.db4o;

import java.util.List;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectServer;
import com.db4o.query.Predicate;
import com.db4o.query.Query;
import com.sillycat.core.model.User;

public class DB4OService {

private ObjectContainer db;

private boolean isLocal = true;

public void init() {
if (isLocal) {
db = Db4o.openFile("local.yap");
} else {
ObjectServer server = Db4o.openServer("server.yap", 1212);
server.grantAccess("sillycat", "kaishi");

db = Db4o.openClient("192.168.10.103", 1212, "sillycat", "kaishi");
}
}

public void destroy() {
if (db != null) {
db.close();
}
}

public ObjectContainer getDB() {
if (db == null) {
init();
}
return db;
}

public static void main(String[] args) {
DB4OService s = new DB4OService();
s.init();
ObjectContainer db = s.getDB();
User u1 = new User();
u1.setId(Integer.valueOf("1"));
u1.setName("sillycat01");
try {
db.set(u1);
} catch (Exception e) {
s.destroy();
e.printStackTrace();
}

// QBE(Query by Example)
try {
List lusers = db.get(u1);
System.out.println(lusers.size() + " : " + lusers.get(0));
} catch (Exception e) {
s.destroy();
e.printStackTrace();
}

// SODA(Simple Object Database Access)
try {
Query lquery = db.query();
lquery.constrain(User.class);
lquery.descend("name").constrain("sillycat01");
List lusers2 = lquery.execute();
System.out.println(lusers2.size() + " : " + lusers2.get(0));
} catch (Exception e) {
s.destroy();
e.printStackTrace();
}

// NQ(Native Queries)
try {
List lusers3 = db.query(new Predicate<User>() {
public boolean match(User u) {
// 这样才是类型安全的
return u.getName().equals("sillycat01");
}
});
System.out.println(lusers3.size() + " : " + lusers3.get(0));
} catch (Exception e) {
s.destroy();
e.printStackTrace();
}
db.delete(u1);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值