db4o java_DB4O 社区版 8.1.3 发布,面向对象数据库[通俗易懂]

db4o java_DB4O 社区版 8.1.3 发布,面向对象数据库[通俗易懂]Db4o是一个面向对象数据库,能对复杂的对象结构进行持久化,如树结构等,并使用本地语言进行数据查询,支持单用户模式,多用户模式。社区版本升级到全面支持Linux.使用例子初始化importcom.db4o.cs.Db4oClientServer;publicclassNode{publicStringname;publicNodeLeft;publicNodeRight;}St…

大家好,又见面了,我是你们的朋友全栈君。

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下。直接下载使用。

af641a674082b1c52307d7c285e28aa2.png

111bd291360286e275ce583e8203df27.png

5e22d81372e814208e0a7d8e4c5b5679.png

产品对比:

Db4o 适合操作面向对象结构,提供图形界面查询数据。

iBoxDB 适合高性能,高并发,安全数据空间的应用需求。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytest(8)parametrize参数化[通俗易懂]

    Pytest(8)parametrize参数化[通俗易懂]前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月28日
    17
  • zigbee开发板(nxpzigbee开发)

    前面我们搭建好了zigbee开发的硬件平台,买一块开发板,注意只要这块开发板上有cc2530,可以向里面烧录程序就可以了。具体的烧录过程我会最近上传我的烧录过程,相关软件我尽快上传。好了回归这一次的主题,那么我们到底需要什么样的开发环境呢?这完全取决于你的项目大小,如果你的项目只是学会使用zigbee,那么你只需要一款烧录软件,以及一款合适的用于编写cc2530的c编译器就OK了。但是我这

    2022年4月10日
    54
  • redis过期删除机制(redis过期策略和删除策略)

    在Redis中,内存的大小是有限的,所以为了防止内存饱和,需要实现某种键淘汰策略。主要有两种方法,一种是当Redis内存不足时所采用的内存释放策略。另一种是对过期键进行删除的策略,也可以在某种程度上释放内存。1、内存释放的策略Redis中有专门释放内存的函数:freeMmoryIfNeeded。每当执行一个命令的时候,就会调用该函数来检测内存是否够用。如果已用内存大于最大内存限制,它就会进行内存释…

    2022年4月17日
    71
  • java实现异步调用

    java实现异步调用1、使用线程池的逻辑实现异步调用packagecom.ourlang.dataextract.controller;importcom.google.common.util.concurrent.ThreadFactoryBuilder;importcom.ourlang.dataextract.common.CommonResult;importcom.ourlang.dataextract.service.ISInPatientListService;importorg.apach

    2022年7月11日
    15
  • android之解析包时出现错误(二)

    为什么是二呢,之前遇到过一次了,详见http://blog.csdn.net/jason0539/article/details/12222173这次的原因不同,再记录下public class DownloadTask { /** * @param path下载地址 * @param filePath存储路径 * @param progressDialog进度

    2022年3月11日
    36
  • Pytest(1)安装与入门「建议收藏」

    Pytest(1)安装与入门「建议收藏」pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月30日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号