次の Java ファイルを含むアプリケーションがあります。
サービス:
AccountService.java
UserService.java
MessageService.java
DAO:
AccountDAO.java
UserDAO.java
MessageDAO.java
テーブル:
ACCOUNTS
USERS
MESSAGES
には、3 つのテーブルすべてからデータを照会MessageService.java
する関数があります。newMessage()
(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がたくさんあるので、それは本当に悪いことです
より良いプラクティスと見なされるアプローチはどれですか? または、私が見逃している別のアプローチはありますか?