从两个不同的应用程序访问同一个数据库(读/写和只读)

Fab*_*bio 1 spring hibernate jpa ehcache

我知道有很多关于这方面的文档,但我对这个论点完全是新手,我想对此提出一些简单的建议.我正在使用spring hibernate和jpa.我将在同一台服务器上有两个不同的应用程序.它们都与同一个数据库进行通信,但一个只是读取而另一个是读写.哪种方式最好?看起来我知道应该是必要的二级缓存,如EHCache,但有一些我无法理解的愚蠢的事情.例如,我应该在两个应用程序中创建完全相同的实体吗?只读应用程序如何将其实体与其他应用程序创建的实体相关联?

Shi*_*gon 5

好吧,这里有一些关于你问题的评论

  1. 从理论上讲,您根本不必强制将相同的Java类映射到数据库表.您可以创建不同的并注释它们,以便两个集都映射到相同的表.话虽这么说,这不是一个好习惯.您应该做的是拥有一个数据访问模块,您可以将映射到表的JPA实体bean集合,以及允许您对这些进行基本操作的类(至少是CRUD),然后具有单独的服务使用data-access-module类实现特定业务逻辑的两个项目中的每个类

  2. 由于您有2个应用程序访问同一个数据库,因此您将处理两个单独的JPA上下文,它们将分别刷新和同步.因此,如果您不确定每次需要时手动刷新修改,则可能会出现一些数据不一致的情况.如果你在它之上使用二级缓存(如EHCache),这可能会成为一个问题.但是,在当前的设置中,只有读取和写入的应用程序应遵循这些限制,另一个(只读的应用程序)可以(实际上建议)使用二级缓存来加速其操作.只需确保刷新/过期所述缓存,以便在第一个应用程序写入时获得所需的数据(即,如果您经常进行写入,您的缓存也应该经常过期.如果您每月写一次,可以在只读应用程序的二级缓存上配置更长的到期时间)