java - 哪个 Android/Java ORM 像 Hibernate 一样使用 “object caching”?

标签 java android hibernate orm identity-map

我看到了一堆关于 Hibernate 的轻量级替代品的问题,尤其是对于 Android。但它们中的哪一个具有“身份映射”模式?

此模式确保表示数据库中一行的任何对象在任何 session 中只存在一次。 – 它有助于我的程序保持一致:如果我在某处更改了一个映射对象,那么它在任何地方都会更改(因为所有引用都指向同一个对象)。无论我是通过新的数据库查询重新获取对象,还是仍然保留之前调用的对象,都没有关系:ORM 确保它们的行为都像同一件事。

Hibernate 在它的“一级缓存”中执行此操作。

最佳答案

ORMLite是一个 Android ORM 包,从 4.26 版(2011 年 9 月 26 日发布)开始,它包含一个内部对象缓存的第一个版本。 ORMLite 没有“ session ”模式,但用户可以将缓存注入(inject)任何 DAO 并可以在他们选择时刷新它。这是缓存支持的文档。

http://ormlite.com/docs/object-cache

引用手册,缓存支持以下内容:

  • 如果您使用 DAO 创建一个对象,它将被添加到缓存中。
  • 当您使用 DAO 查询对象时,如果该对象在缓存中,它将被返回。如果它不在缓存中,那么它将被添加到缓存中。这适用于原始查询方法。
  • 如果您使用 DAO 更新数据库的对象,如果它存在于缓存中,它将被更新。
  • 如果您使用 DAO 从数据库中刷新一个对象,如果它存在于缓存中,它将被刷新。
  • 如果使用 DAO 删除对象,对象将从缓存中删除。

ORMLite 核心包中包含 2 个对象缓存实现。一种支持弱/软引用,另一种是标准 LRU。

与 Hibernate 的 1 级缓存相比,它[显然]是一个非常简单的实现。欢迎反馈。

关于java - 哪个 Android/Java ORM 像 Hibernate 一样使用 “object caching”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774902/

相关文章:

java - 如何防止 Wicket 自动完成 Ajax 组件逃逸?

java - 评估数组中的数学方程式

java - 使用 GridBagLayout 使 JButton 大小相等

Android无法录制清晰语音的来电

java - Hibernate:SQL Server .MDF 文件的 connection.url

java - Hibernate 内连接 ManyToOne

java - Spring规范的谓词应该是静态的吗?

java - 从 .txt 文件中读取方程式并将其设置为方法的返回

android - 如何使用 Play Install Referrer Library 从 Playstore 获取推荐代码?

android - 如何在 Android Studio 的设计面板中使用 CustomView?