参考数据模式(Reference Data Pattern)

2019-09-17 17:37发布

与此类似线程,但不完全是: 如何缓存信息在线程安全的精气神

什么是对付“参考数据”通常的模式 - 即经常被应用程序读取,通常是外部化到数据库或属性文件,但更新不频繁(天,周,月)的数据? 当数据更新 ,它会从外部进行更新。

请问这通常是我可以用一个DAO注入,从而将能够管理它自己的内容的单? 我喜欢这个服务,这将迫使刷新暴露刷新()方法的想法(即通过MBean - 所以我不会有反弹的应用程序)。

从另一个线程SO,它听起来就像人们可能只是实例化DAO的必要时并在该级别的缓存透明。

我有点像单身的服务理念被注入了无论是从数据库加载数据的真实DAO,否则一个模拟/测试双返回一个硬编码的响应。 但是,如果我要实现服务为通过Java枚举的一单,这使得布线它通过Spring有点难度。

那么,如何做其他人通常处理参考的数据? 查询的随意但在幕后缓存? 或单独的内存服务?

Answer 1:

我通常注入DAO实现到使用Spring我的服务层,你提到经常有一个测试的实施( XMLDaoFlatFileDao我除了基于SQL的执行)。 对于小型数据集通常只写我自己的高速缓存和存储在内存中的基础表(一个或多个)加载的所有数据。

说了这么多,我有一个相当小的数据集工作的优势。 如果我处理一个更大的数据集我可能会考虑关闭的,现成的缓存解决方案,可能跨多个JVM分布(如兵马俑 )。

正如我在前面提到的线程我也暴露出刷新()方法。 在对数据的更新不需要及时,我只是通过一个MBean手动调用这个传播的情况。 在我要自动执行此情况下,我已经使用Tibrv听从数据库更新和刷新缓存数据(使用MS-SQL触发产生Tibrv消息)。

我不太明白您参考使用Java枚举来实现服务 - 如何将这项工作?



文章来源: Reference Data Pattern