您现在的位置是:首页 > 文章详情

DB4O 社区版 8.1.9 发布,Java Lambda 查询数据库

日期:2019-09-30点击:387

Db4o 是一个面向对象数据库,能对复杂的对象结构进行持久化,支持单用户模式,多用户模式。

这版本把 Java7-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社区版本代码下载

产品对比
Db4o 采用很炫的面向对象技术。
iBoxDB 面向高性能与安全数据隔离。

原文链接:https://www.oschina.net/news/110252/db4o-8-1-9-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章