两个应用程序(A和B)使用休眠模式从数据库中检索相同的实体。应该在每个应用程序中实例化DAO,还是应该有一个单独的应用程序(C)包含DAO的唯一实例,并公开供A和B使用的服务(例如RMI)?

如果后一种情况成立,那么防止加载异常的常用做法是什么?我认为我目前的计划是使用RMI并为每个域对象创建一个DTO。我唯一的保留意见是,A和B中的实体将无法引用C中的实体。这是一种常见的策略吗?

可能值得一提的是,有4个不同的服务器,每个服务器分别运行A和B。目前,每个服务器上也都装有数据库-之所以出现此问题,是因为我正在尝试集中化某些东西-要么所有项目都有一个DAO指向单个数据库服务器或所有应用程序都指向C托管的服务,该服务具有单个数据库的DAO。

最佳答案

DAO通常是无状态单例,用于从数据库加载,搜索,修改和删除实体。您为什么要使用RMI与另一个JVM进行通信呢?您将严重降低性能,实体将永远不会连接到会话,并且您将无法使用跨越单个实体上单个操作(加载,存储)的事务。只是没有意义。

在每个应用程序中都有一个DAO实例。

关于java - 多个DAO实例=错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7994609/

10-11 01:43
查看更多