Query By Example
當你使用QBE時,你要給Db4o提供一個模板對象,Db4o將返回所有匹配不是默認值的對象。通過反射機制把所有沒有采用默認值的屬性同過
AND表達式連接成為一個查詢表達式,這兒是一個簡單的例子:
PersistentExample.java: retrievePilotByName
public static void retrievePilotByName(ObjectContainer db) .{
??????? Pilot proto=new Pilot("Michael Schumacher",0);
??????? ObjectSet result=db.get(proto);
??????? listResult(result);
??? }
同過這種方式有很多明顯的限制:
1.db4o必須通過放射機制得到對象所有屬性.
2.不能只想高級查詢表達式.(比如AND OR NOT 等等)
3.不能對屬性約束某些值,比如0,空字符,null,因為這些值被解釋為沒有約束.
4.你需要創建對象而不是已經初始化的,也就是說你不能初始化屬性如果他們已經被聲明.你不能強迫
一個類的對象僅僅允許一個定義很好的初始化的契約.
5.你需要一個構造器來創建對象而不是已初始的屬性.
避免上述的限制,db4o提供了NQ查詢系統.