内容简介:Db4o 是一个面向对象数据库,能对复杂的对象结构进行持久化,支持单用户模式,多用户模式。 这版本把 Java7-Java11的一些有用新指令补上,主要是为了编译 Java11 的 Lambda 语句, Lambda 在底层使用了新指令,这...
Db4o 是一个面向对象数据库,能对复杂的对象结构进行持久化,支持单用户模式,多用户模式。
这版本把 Java 7-Java11的一些有用新指令补上,主要是为了编译 Java11 的 Lambda 语句,
Lambda 在底层使用了新指令,这个版本的 Db4o 还是基于 Java7,以补丁方式编译 Lambda。在OpenJDK11 上测试通过。
Java Lambda 已经很多年了,支持Lambda查询数据库的类库还很少,
这里直接把 Lambda 放入到 Db4o 中,简单查询条件直接编译为数据库查询语句。
使用例子
初始化
public static class Detail {
@Indexed
public long type;
public String memo;
public Record record;
}
public static class Record {
@Indexed
public String name;
public String noName;
@Indexed
public double indexField;
public double noIndexField;
public Detail detail;
}
String dbname = "index.j.db";
var ecfg = Db4oEmbedded.newConfiguration();
var memory = new MemoryStorage();
ecfg.file().storage(memory);
ecfg.common().add(new TransparentActivationSupport());
ecfg.common().add(new TransparentPersistenceSupport());
ecfg.file().generateUUIDs(ConfigScope.GLOBALLY);
try (var oc = Db4oEmbedded.openFile(ecfg, dbname)) {
}
插入对象
try (var see = oc.ext().openSession()) {
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 50; j++) {
var r = new Record();
r.name = "Name-" + i;
r.noName = r.name;
r.indexField = (double) i;
r.noIndexField = i;
r.detail = new Detail();
r.detail.record = r;
r.detail.type = j;
r.detail.memo = r.name + " on meno";
see.store(r);
}
}
see.commit();
}
Java Lambda 查询数据,一句实现全部表达,升级的代码就是为了运行这句在数据库上
var rs = see.query((Record r) -> r.indexField == value);
如果希望像普通 Lambda 一样运行,把字段名放在右边
产品对比
Db4o 采用很炫的面向对象技术。
iBoxDB 面向高性能与安全数据隔离。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Art of Computer Programming, Volumes 1-3 Boxed Set
Donald E. Knuth / Addison-Wesley Professional / 1998-10-15 / USD 199.99
This multivolume work is widely recognized as the definitive description of classical computer science. The first three volumes have for decades been an invaluable resource in programming theory and p......一起来看看 《The Art of Computer Programming, Volumes 1-3 Boxed Set》 这本书的介绍吧!