of, from 메서드 패턴

Haechan Kim·2023년 8월 2일
3

Spring

목록 보기
49/69

offrom은 DTO 생성, 변환시에 주로 사용되는 메소드 패턴.

of 메소드

of 메소드는 보통 정적(static) 메소드로 구현되며, 여러 개의 인자를 받아 DTO 객체를 생성하는 역할.
주로 생성자에 필요한 인자들을 파라미터로 받아서 DTO 객체를 생성하는 용도로 사용.
이는 빌더 패턴(Builder Pattern)의 일종으로 볼 수 있다.

public class UserDTO {
    private String username;
    private String email;

    // 생성자
    private UserDTO(String username, String email) {
        this.username = username;
        this.email = email;
    }

    // of 메소드 정의
    public static UserDTO of(String username, String email) {
        return new UserDTO(username, email);
    }
    
    // 또는 builder 패턴 사용
    public static UserDTO of(String username, String email) {
        return UserDTO.builder()
                .username(username)
                .email(email)
                .build();
    }

    // Getter 메소드 생략
}

UserDTO 생성 시 다음과 같이 of 메소드를 사용할 수 있다.

UserDTO userDto = UserDTO.of("john_doe", "john@example.com");

from 메소드

from 메소드는 보통 정적 메소드로 구현되며, 다른 객체를 기반으로 DTO를 생성하는 역할.
주로 데엔티티나 다른 DTO를 변환하여 현재 DTO로 매핑하는 용도로 사용.

ex) UserEntity를 기반으로 UserDTO로 변환하는 from 메소드

public class UserDTO {
    private String username;
    private String email;

    // 생성자 생략

    // from 메소드 정의
    public static UserDTO from(UserEntity userEntity) {
        return new UserDTO(userEntity.getUsername(), userEntity.getEmail());
    }

    // Getter 메소드 생략
}

UserEntity를 UserDTO로 변환할 때는 다음과 같이 from 메소드를 사용할 수 있다.

UserEntity userEntity = userRepository.findById(1L); // 예시로 가정
UserDTO userDto = UserDTO.from(userEntity);

위와 같이 of와 from 메소드를 사용하면 DTO 객체를 생성하거나 변환할 때 코드의 가독성과 재사용성을 높일 수 있다.
코드 중복을 줄이고, DTO 클래스 간결하게 유지 가능.

0개의 댓글