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)