Caching 如何将Hazelcast与MapStore一起使用

Caching 如何将Hazelcast与MapStore一起使用,caching,hazelcast,Caching,Hazelcast,我正在使用Hazelcast作为我的应用程序的缓存解决方案。 我的应用程序几乎没有对数据库的插入和更新,这些也需要同步到缓存 我希望使用MapStore功能,以便在执行IMap.put()时,Hazelcast将负责在底层数据库中持久化对象,并更新其缓存 在重写的存储实现中,我希望以以下方式调用我的DAO来持久化数据 public void store(Long key, Product value) { log.info("Storing Data for Employ

我正在使用Hazelcast作为我的应用程序的缓存解决方案。 我的应用程序几乎没有对数据库的插入和更新,这些也需要同步到缓存

我希望使用MapStore功能,以便在执行IMap.put()时,Hazelcast将负责在底层数据库中持久化对象,并更新其缓存

在重写的存储实现中,我希望以以下方式调用我的DAO来持久化数据

public void store(Long key, Product value)
    {
        log.info("Storing Data for Employee {} in Database using DataStore ",     value);
    Long employeeId = employeeDao.create(value);
    value.setId(employeeId );

}
下面列出了几个问题:- 1) 在put调用中,我想使用“key”作为“employeeId”,但这只是在Db中插入此记录后生成的。那么,当我没有身份证的时候,我该如何放入缓存呢。?我希望Hazelcast使用作为store方法调用的一部分(或任何其他方式)生成的“id”作为对象的键

Imap.put(关键,新员工(“员工姓名”、“员工年龄”))

2) MapStore实现的store方法返回一个void,因此我无法将为此对象生成的Id返回给客户端。我怎样才能做到这一点? 我尝试在映射上使用MapEntryListeners,但添加的条目回调不会返回新对象。我还向MapStore添加了后处理MapStore接口,但无法将新值返回给客户端

请告知

您有两种选择:

1) 在数据库外部生成
employeeId
。您可以使用来自Hazelcast的

2) 如果必须让数据库生成id,则需要在将
员工
存储到数据库中后手动将其放入缓存中