面向 Java 开发人员的 db4o 指南: 查询,更新和一致性
2010-04-01 00:00:00 来源:WEB开发网当运行清单 3 中的查询时,数据库将报告三个 Brian,其中两个是 Brian Goetz。(如果 persons.data 文件已经存在于当前的目录,则会出现类似的结果 —— 创建的所有 Person 将被存储到 persons.data 文件,而查询将返回存储在其中的所有 Brian)。
扩展接口
db4o 开发团队偶然情况下发现某些 API 被使用得较少,或指出对在团队还不确定的 API 上进行的 “实验” 应该成为核心 ObjectContainer API 的一部分。在这种情况下,ext() 方法返回的 ExtObjectContainer 实例提供了方法。各版本中这个类的可用方法不尽相同,因为它们被引入、删除或移入了核心 ObjectContainer 类本身。这个列表包括了测试内存中对象的方法,以查看对象是否和 db4o 容器实例相关联,列出了容器可识别的所有类,或者设置/释放并发的信号量。并且始终查看 db4o 文档中有关 ExtObjectContainer 类的完整信息。
很明显,这里并不强制使用关于主键的旧规则,那么对象数据库如何处理惟一性概念?
采纳 OID
当对象被存储到对象数据库中,将创建一个惟一键,称为 Object identifier 或 OID(其发音类似于 avoid 的最后一个音节),它惟一地标识对象。OID,和 C# 和 Java 编程中的 this 指针/引用类似,除非显式指定,否则则是隐式的。在 db4o 中,可以通过调用 db.ext().getID() 查找给定对象的 OID。(还可以使用 db.ext().getByID() 方法按照 OID 检索对象。调用该方法具有一些非常复杂的含义,不便在这里讨论,但是它仍然是一种方法)。
在实践中,所有这些意味着由开发人员判断是否一个对象曾经存在于系统中,通常在插入对象前通过查询该对象的容器实现,如清单 4 所示:
更多精彩
赞助商链接