java

[spring] Bean, VO, DTO

yhansol 2022. 12. 14. 15:03
728x90
반응형

자바 스프링 프로젝트를 진행하면서 무수히 많이 봤을 녀석들이다.

Bean, VO, DTO 너무 자연스럽고 당연시하게 사용은 했지만 문득 저 세 녀석들의 차이점이 무엇일까? 라는 생각이 들었다.

용어 정의에 대한 중요성을 다시 한 번 느끼면서 Bean, VO, DTO 를 정의해보도록 하자.

Bean

  • Bean 객체는 Spring의 IoC Container를 통해 관리되어지는데, DI(Dependency Injection : 의존성 주입)는 XML의 설정정보를 읽어와 객체를 생성하여 등록작업 후에 클래스가 사용될 때 외부에서 객체를 주입하는 기능이다.
  • Spring이 시작되면서 패키지에서 Bean으로 생성할 어노테이션을 가지고 있는 클래스를 서치한 후에 생성된다.
    (@Controller, Service 등)

VO

  • Value Object, DTO와 비슷해보이지만 내부속성값을 변경할 수 없는 읽기전용(Read-Only)의 특성을 가진 객체이다.

DTO

  • Data Transfer Object, 계층(view-controller-service-dao) 간 데이터 교환을 위해 사용되는 객체이다.
  • VO와 혼용되서 사용되지만 보통 DTO를 지칭한다.
  • 데이터를 담을 private변수와 그 변수를 제어하는 @Getter, @Setter 로 구성되어있다. (ex.lombok)