Db4o是一個面向對象資料庫,能對複雜的對象結構進行持久化,如樹結構等,
並使用本地語言進行數據查詢,
支持單用戶模式,多用戶模式。社區版本升級到全面支持Linux.
使用例子
初始化
import com.db4o.cs.Db4oClientServer; public class Node { public String name; public Node Left; public Node Right; } String dbname = "node.db"; var cfg = Db4oClientServer.newServerConfiguration(); cfg.common().objectClass(Node.class).cascadeOnActivate(true); cfg.common().objectClass(Node.class).cascadeOnUpdate(true); cfg.common().objectClass(Node.class).cascadeOnDelete(true); cfg.common().objectClass(Node.class).callConstructor(true); //Port=0, Local Server. try (var server = Db4oClientServer.openServer(cfg, dbname, 0)) { ... }
插入對象
try (var oc = server.openClient()) { Node root = new Node(); root.name = "Root"; root.Left = new Node(); root.Left.name = "Left"; root.Right = new Node(); root.Right.name = "Right"; root.Right.Right = new Node(); root.Right.Right.name = "Right.Right"; oc.store(root); oc.commit(); }
使用對象模板查詢非null,非0數據
try (var oc = server.openClient()) { Node qo = new Node(); qo.name = "Root"; var ns = oc.queryByExample(qo); var root = ns.next(); System.out.println(root.Right.Right.name); }
Java風格查詢
import com.db4o.query.Predicate; try (var oc = server.openClient()) { Listns = oc.query(new Predicate() { @Override public boolean match(Node n) { return n.name.equals("Root"); } }); Node root = ns.get(0); System.out.println(root.Right.Right.name); }
底層查詢,可能適合開發自定義查詢器
try (var oc = server.openClient()) { var q = oc.query(); q.constrain(Node.class); q.descend("name").constrain("Root").equal(); var ns = q.execute(Node.class); }
這個版本全面升級對象管理器到Linux下。直接下載使用。
有高清大圖,
/Images/af641a674082b1c52307d7c285e28aa2.png
/Images/111bd291360286e275ce583e8203df27.png
/Images/5e22d81372e814208e0a7d8e4c5b5679.png
產品對比:
Db4o 適合操作面向對象結構,提供圖形界面查詢數據。
iBoxDB 適合高性能,高併發,安全數據空間的應用需求。
[admin
]