java

도메인 계층 과 비니지스 로직

하루이2222 2024. 8. 24. 20:58

1. 도메인 계층 (Domain Layer)

  • 역할: 도메인 계층은 애플리케이션의 핵심 비즈니스 로직규칙을 정의한다. 이 계층에서 도메인 객체는 데이터와 해당 데이터에 대한 비즈니스 로직을 캡슐화한다.
  • 예시: User 도메인 객체가 비밀번호를 변경하는 비즈니스 로직을 포함한다. 예를 들어, 비밀번호가 올바르게 입력되었는지 확인하고, 새로운 비밀번호로 설정하는 등의 로직이 포함된다.
public class User {
    private String username;
    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public void changePassword(String oldPassword, String newPassword) {
        if (!this.password.equals(oldPassword)) {
            throw new IllegalArgumentException("Old password is incorrect.");
        }
        this.password = newPassword;
    }

    // Getter 및 기타 메소드
}

  • 여기서 changePassword 메소드는 비밀번호 변경이라는 비즈니스 규칙을 표현한다. 이 메소드는 비밀번호 변경의 논리적인 부분을 담당하며, 비밀번호가 올바르게 입력되었는지를 검증하고 변경한다.

2. 서비스 계층 (Service Layer)

  • 역할: 서비스 계층은 비즈니스 로직의 실행을 조율하고, 여러 도메인 객체 간의 상호작용을 관리한다. 또한, 서비스 계층은 도메인 계층에 정의된 비즈니스 로직을 호출하고, 필요한 경우 데이터를 저장하거나 다른 서비스와 상호작용하는 등의 작업을 수행한다.
  • 예시: UserService 클래스에서 도메인 객체인 User를 사용하여 비밀번호 변경 로직을 실행한다.
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void changeUserPassword(String username, String oldPassword, String newPassword) {
        // 사용자 조회
        User user = userRepository.findByUsername(username);
        if (user == null) {
            throw new IllegalArgumentException("User not found.");
        }

        // 도메인 객체의 비즈니스 로직 호출
        user.changePassword(oldPassword, newPassword);

        // 변경된 비밀번호 저장
        userRepository.save(user);
    }
}

  • 서비스 계층의 역할:
    • 사용자 조회: 서비스 계층은 저장소(리포지토리)에서 User 도메인 객체를 불러온다.
    • 비즈니스 로직 실행: User 도메인 객체의 changePassword 메소드를 호출하여 비밀번호 변경 로직을 실행한다.
    • 데이터 저장: 변경된 비밀번호를 데이터베이스에 반영하기 위해 리포지토리의 save 메소드를 호출한다.

요약

  • 도메인 계층: 비즈니스 규칙과 로직을 정의하는 계층이다. User 도메인 객체는 비밀번호 변경과 같은 비즈니스 로직을 포함하며, 이 로직은 changePassword 메소드에 정의된다.
  • 서비스 계층: 비즈니스 로직의 실행을 조율하고, 도메인 객체 간의 상호작용을 관리한다. 서비스 계층에서 User 도메인 객체의 비즈니스 로직을 호출하고, 이를 통해 실제로 작업을 수행한다.

'java' 카테고리의 다른 글

MVC의 계층 과 역활  (0) 2024.08.24
[자바] String Class 의 불변성  (0) 2024.08.18
[자바] equals overriding 과 hash code  (0) 2024.08.11
자바의 static 과 final  (0) 2024.07.28
자바의 메모리 구조 와 할당  (0) 2024.07.28