我使用简单层通过键或 id 加载和存储实体,我只是在该层中添加了缓存。当具有给定键的实体在缓存中时,返回它而不是从数据存储中获取。当实体更新并保存到数据存储时,该层只需将缓存中的实体设置为空。它是完全透明的。
它似乎工作正常,但是从缓存中获取的对象与从数据存储中获取的对象略有不同。有些事情停止工作,例如,我不能在实体内部的集合上使用 .contains() 来检查两个实体之间是否存在关系。我还遇到了一个奇怪的行为,当我从缓存加载一个对象并立即存储到数据存储区时,代表关系的集合中的所有项目都被替换为null
s。但是我无法重现它。现在它工作正常。
我不知道幕后发生了什么,所以问题是,这种使用缓存的方式可靠吗?我可以像从数据存储中获取实体一样处理从缓存中获取的实体(访问子项、更新、删除......)吗?