【发布时间】:2015-10-21 14:19:24
【问题描述】:
我正在使用 Hazelcast 作为我的应用程序的缓存解决方案。 我的应用程序对数据库的插入和更新很少,这些也需要同步到缓存。
我想使用 MapStore 功能,以便当我执行 IMap.put() 时,Hazelcast 负责将对象持久保存在底层 Db 中并更新其缓存。
在覆盖的存储实现中,我想以以下方式调用我的 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 call中,我想使用“key”作为“employeeId”,但这仅在数据库中的该记录发生插入后生成。那么在没有Id的情况下如何放入Cache呢?我希望 Hazelcast 使用作为存储方法调用(或任何其他方式)的一部分生成的“id”作为我的对象的键。
Imap.put(key,new Employee("name_of_Employee","age_of_employee"))
2) MapStore 实现的 store 方法返回一个 void,因此我无法将为此对象生成的 Id 返回给客户端。我怎样才能做到这一点? 我尝试在地图上使用 MapEntryListeners,但添加的条目回调不返回新对象。我还在 MapStore 中添加了 PostProcessingMapStore 接口,但无法将新值返回给客户端。
请指教
【问题讨论】: