我看到了一堆关于 Hibernate 的轻量级替代品的问题,尤其是对于 Android。但它们中的哪一个具有“身份映射”模式?
此模式确保表示数据库中一行的任何对象在任何 session 中只存在一次。 – 它有助于我的程序保持一致:如果我在某处更改了一个映射对象,那么它在任何地方都会更改(因为所有引用都指向同一个对象)。无论我是通过新的数据库查询重新获取对象,还是仍然保留之前调用的对象,都没有关系:ORM 确保它们的行为都像同一件事。
Hibernate 在它的“一级缓存”中执行此操作。
最佳答案
ORMLite是一个 Android ORM 包,从 4.26 版(2011 年 9 月 26 日发布)开始,它包含一个内部对象缓存的第一个版本。 ORMLite 没有“ session ”模式,但用户可以将缓存注入(inject)任何 DAO 并可以在他们选择时刷新它。这是缓存支持的文档。
引用手册,缓存支持以下内容:
- 如果您使用 DAO 创建一个对象,它将被添加到缓存中。
- 当您使用 DAO 查询对象时,如果该对象在缓存中,它将被返回。如果它不在缓存中,那么它将被添加到缓存中。这不适用于原始查询方法。
- 如果您使用 DAO 更新数据库的对象,如果它存在于缓存中,它将被更新。
- 如果您使用 DAO 从数据库中刷新一个对象,如果它存在于缓存中,它将被刷新。
- 如果使用 DAO 删除对象,对象将从缓存中删除。
ORMLite 核心包中包含 2 个对象缓存实现。一种支持弱/软引用,另一种是标准 LRU。
与 Hibernate 的 1 级缓存相比,它[显然]是一个非常简单的实现。欢迎反馈。
关于java - 哪个 Android/Java ORM 像 Hibernate 一样使用 “object caching”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774902/