DTO , VO, Builder Pattern

DTO (Data Transfer Object)

  • 주로 계층 간 데이터를 전송하기 위한 객체입니다. 필드는 대부분 public으로 선언되며, getter/setter를 통해 외부와의 데이터 교환이 목적입니다. 비즈니스 로직은 포함하지 않는 것이 일반적입니다.

    • 예: API 전송, DB에서 조회한 데이터

    • 일반적으로 가변(mutable)하며, 직렬화에 용이한 구조로 설계됩니다.

VO (Value Object)

  • 값 그 자체를 표현하는 객체로, 불변(immutable) 성을 가지는 것이 원칙입니다. 동일한 값을 가지면 같은 객체로 간주되며, equals/hashCode를 오버라이딩하여 비교에 사용됩니다.

    • 생성 시 값이 고정되며, setter 없이 생성자만으로 설정합니다.

    • 단, 실제 협업시에는 VO와 DTO를 혼동하여 사용하는 경우가 대부분이라 이 원칙이 절대적으로 지켜지는 경우는 흔치 않습니다.

Builder Pattern

  • Builder 패턴은 복잡한 객체의 생성 과정을 단계별로 분리하여, 유연하고 가독성 높은 방식으로 객체를 생성하는 디자인 패턴입니다.

  • 생성자로는 처리하기 어려운 다양한 선택적 매개변수를 다룰 때 유용합니다.

  • 내부적으로는 정적 내부 클래스를 사용하여 외부 객체를 생성합니다.

  • 롬복에서 제공하는 @Builder 으로 손쉽게 빌더패턴 구현이 가능합니다.

Last updated