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

时间:2011-09-29 10:05:32

标签: hibernate spring jpa ehcache

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

我只会创建两个用户,其中一个只有读访问权限(如果你的数据库引擎支持它)。