我计划使用redis和redison作为java应用程序和postgresql数据库之间的缓存层。我有一个名为nodes的表,如下所示:
CREATE TABLE nodes
(
node_id bigint GENERATED BY DEFAULT AS IDENTITY(START WITH 1 INCREMENT BY 1),
node_name varchar(100) NOT NULL,
PRIMARY KEY (node_id)
)
我想使用redisson rmap持久性来缓存这个结构。我的目标是让rmap看起来像这样:
Rmap<Integer, Node>
其中键是pk,值是节点本身。
我想通过使用maploader和mapwriter,使用read-through和write-though策略来缓存这个rmap。
然后,我想要一个java方法,它应该创建并持久化一个节点。
public void createNode(String nodeName) {
Node node = new Node();
node.setName(nodeName);
// how can I put elements in the rmap since,
// the PK will be available after the INSERT statement will run?
rmap.put(?, node);
}
问题来了。既然pk是从postgres自动生成的,那么我如何使用rmapwriter插入节点呢?因为,为了将元素放入rmap中,我需要密钥,直到insert语句运行,我才拥有密钥?
1条答案
按热度按时间cbwuti441#
您可以使用prepared语句从postgres获取生成的键。