我有一个包含以下 java 文件的应用程序:
服务:
AccountService.java
UserService.java
MessageService.java
DAO:
AccountDAO.java
UserDAO.java
MessageDAO.java
表:
ACCOUNTS
USERS
MESSAGES
在MessageService.java
中,我有一个newMessage()
必须从所有 3 个表中查询数据的函数。
(1) 根据 Spring 的解耦标准,应该这样调用:
AccountDAO.java -- ACCOUNTS
/
MessageService.java -- MessageDAO.java -- MESSAGES
\
UserDAO.java -- USERS
但问题是,这种方法会进行 3 次 DB 调用。
(2) 为了获得更好的性能,我会这样做:
MessageService.java -- MessageDAO.java -- Join ACCOUNTS, MESSAGES and USERS
但是这样,它是紧密耦合的,如果 USERS 表发生变化,我将不得不更改 MessageDAO.java(以及我拥有的所有其他使用 USERS 表的 DAO)。这真的很糟糕,因为(在非假设的情况下)我们有很多 DAO
哪种方法被认为是更好的做法?还是我缺少另一种方法?