db4o java_DB4O 社区版 8.1.3 发布,面向对象数据库
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()) {
List ns = 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下。直接下載使用。
產品對比:
Db4o 適合操作面向對象結構,提供圖形界面查詢數據。
iBoxDB 適合高性能,高并發,安全數據空間的應用需求。
總結
以上是生活随笔為你收集整理的db4o java_DB4O 社区版 8.1.3 发布,面向对象数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++算法题】求三角形边长
- 下一篇: python实现利用留数定理分解分式多项