Pilot { string name; int point; }
Car { string model; Pilot pilot; }
// storeFirstCar
Car car1=new Car("Ferrari");
Pilot pilot1=new Pilot("Michael Schumacher",100);
car1.setPilot(pilot1);//保存Car时,默认也保存Pilot了
db.set(car1);
///
// retrieveCarByPilotQBE
Pilot pilotproto=new Pilot("Rubens Barrichello",0);
Car carproto=new Car(null);
carproto.setPilot(pilotproto);
ObjectSet result=db.get(carproto);
listResult(result);
// retrieveCarsByPilotNameNative
final String pilotName = "Rubens Barrichello";
ObjectSet results = db.query(new Predicate() {
public boolean match(Car car){
return car.getPilot().getName().equals(pilotName);
}
});
listResult(results);
// retrieveCarByPilotNameQuery
Query query=db.query();
query.constrain(Car.class);
query.descend("pilot").descend("name")
.constrain("Rubens Barrichello");
ObjectSet result=query.execute();
listResult(result);
// retrieveCarByPilotProtoQuery
Query query=db.query();
query.constrain(Car.class);
Pilot proto=new Pilot("Rubens Barrichello",0);
query.descend("pilot").constrain(proto);
ObjectSet result=query.execute();
listResult(result);
//
更新Car时,需要注意的地方
// updatePilotSeparateSessionsImprovedPart1
Db4o.configure().objectClass("com.db4o.f1.chapter2.Car")
.cascadeOnUpdate(true);//修改更新级联为真
// updatePilotSeparateSessionsImprovedPart2
ObjectSet result=db.query(new Predicate() {
public boolean match(Car car){
return car.getModel().equals("Ferrari");
}
});
Car found=(Car)result.next();
found.getPilot().addPoints(1);
db.set(found);//更新Pilot的分数
// updatePilotSeparateSessionsImprovedPart3
ObjectSet result=db.query(new Predicate() {
public boolean match(Car car){
return car.getModel().equals("Ferrari");
}
});
listResult(result);
///
//删除要注意的地方
// deleteDeepPart1
Db4o.configure().objectClass("com.db4o.f1.chapter2.Car")
.cascadeOnDelete(true);//设置删除级联为真
// deleteDeepPart2
ObjectSet result=db.query(new Predicate() {
public boolean match(Car car){
return car.getModel().equals("BMW");
}
});
Car found=(Car)result.next();
db.delete(found);//删除Car以后,Pilot也被删除了
result=db.query(new Predicate() {
public boolean match(Car car){
return true;
}
});
listResult(result);