0

私は DDD を実践しようとしていますが、以下に書いたこのタイプのルールには疑問があります。

ドメイン層の下のクラス UserAggregator。

public class UserAggregator{
private UUID userId;
private String userName;
private String country;
//getter

boolean isUserNamePatternCorrect(){
  return this.userName.startsWith("TOTO"); 
}
}

ドメイン層の下のリポジトリ インターフェイス。

public interface UserRepository {//User Table
     public UserAggregator findUser(UUID id);
     public void deleteUser(UserAggregator userToARchive);
}

public interface ArchiveUserRepository { //ArchiveUser Table
     public archiveUser(UUID id);
}

UserRepository/ArchiveUserRepository は、Spring データを使用してインフラストラクチャ レイヤーの下に実装されます。

インフラ層の下のサービス。

public  class MyService {

@Autowired
UserRepository userRepo;

@Autowired
ArchiveUserRepository archiveUserRepo;

public void updateUserName(UUID userId){

       UserAggregator userAgg = userRepo.findUser(userId);
       if(Objects.nonNull(userAgg)){
         boolean isCorrect = userAgg.isUserNamePatternCorrect();
        if(!isCorrect){//-----------------------------1
            userRepo.deleteUser(userAgg);//-----------2
            archiveUserRepo.archiveUser(userAgg);//---3
           }
       }
//....
}
}

私の管理ルールは、userNameがパターンと一致しない場合、ユーザーをアーカイブテーブルにアーカイブし、ユーザーテーブルから削除すると述べています。

お気づきのように、ルール (//1 から //3 まで) はサービス クラスに記述されており、アグリゲーターには記述されていません!

これは正しいです ?またはこれを管理する方法は?

4

2 に答える 2