java - 使用数据库序列作为缓存键

标签 java oracle-coherence

我有一个使用 Oracle Coherence 和 DB 的直写式缓存。我正在缓存的 pojo 之一使用数据库序列作为其 ID。我使用 id 作为缓存键。

在将记录插入数据库之前,如果我没有 key (ID),如何插入新的缓存对象?

处理这个问题的最佳方法是什么?我是否应该使用带有直写式缓存的序列?

最佳答案

这确实是一个棘手的问题。 Coherence 使用键来唯一标识每个条目,并使用直写式或后写式缓存,Coherence 会将条目存储到底层数据存储中(通过 CacheStore 接口(interface))。显然,要将条目放入缓存中,它必须有一个 key ,只有随后该条目才会存储到(插入)数据库,此时您正在分配 key 。这绝对是一个先有鸡还是先有蛋的问题。

  1. 如果您使用的是 Oracle SEQUENCE 对象之类的东西,那么您可以在将条目放入缓存之前查询该对象,并使用该值作为键。

  2. 如果您使用触发器或其他“插入时分配”机制,那么我不确定如何解决直写或后写的问题。您可能需要先将数据插入数据库,然后再写入缓存,这看起来既复杂又冗余。

关于java - 使用数据库序列作为缓存键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814345/

相关文章:

java - HTTP 获取请求 - Android - 无法启动 Activity ComponentInfo{

java - 如何在 Java 中使用 try-catch 处理不同的异常 http 类型?

performance - 当内存中数据网格优于 NoSQL/NoSQL + 分布式缓存时

java - Oracle Coherence 覆盖缓存配置的 pof-config

c# - 如何从单个应用程序连接到多个 Oracle Coherence 缓存?

java - 自定义 Jackson 映射器来处理单个字段的映射?

java - 关闭 AlertDialog 后获取单选按钮状态

java - 以编程方式确定 Coherence 主成员

java - oracle 一致性如何因检索到的 key 对象而失败?

java - 无条件布局,layoutInflater.inflate 崩溃