새소식

🍹 (주) 강의 주제/✏️ Spring은 어노테이션에 있다

[Spring] Java Bean과 Value Object의 차이점?

728x90

🤔 Question

👉 Spring Framework를 사용하다 보면 JavaBean과 Value Object(VO)라는 용어를 자주 접하게 됩니다. 둘 다 데이터를 담는 객체처럼 보이지만, 실제로는 목적과 사용 방식이 완전히 다릅니다. 이 둘의 차이를 제대로 이해하지 못하면, 코드가 점점 복잡해지고 유지보수가 어려워집니다.

 

🎯 JavaBean이란?

👉 JavaBean은 프레임워크가 데이터를 다루기 쉽게 하기 위해 만든 표준 객체 규칙입니다. Spring은 객체를 생성하고, 값을 자동으로 주입하고, JSON이나 DB와 매핑해야 하는데, 이때 JavaBean 규칙을 따르는 클래스가 가장 잘 동작합니다. 기본 생성자와 getter, setter를 가지고 있는 것이 핵심입니다.

 

🎯 Value Object(VO)란?

👉 Value Object는 “의미 있는 값”을 표현하는 객체입니다. 예를 들어 돈, 이메일, 주소 같은 개념은 단순한 문자열이나 숫자가 아니라 하나의 개념입니다. VO는 이런 개념을 코드로 표현하며, 생성된 이후에는 값이 바뀌지 않는 불변(Immutable) 객체로 사용됩니다.

 

🎯 JavaBean과 VO의 가장 큰 차이

👉 JavaBean은 “프레임워크가 다루기 좋은 데이터 컨테이너”이고, VO는 “도메인 개념을 표현하는 값 객체”입니다. JavaBean은 값이 계속 바뀔 수 있지만, VO는 생성 후 값이 변하지 않습니다. 또한 JavaBean은 주로 Controller, DTO, Entity 등에 사용되고, VO는 비즈니스 로직 내부에서 사용됩니다.

 

🎯 Spring에서 이 차이가 중요한 이유

👉 Spring 프로젝트에서 모든 객체를 JavaBean처럼 만들면, 도메인 로직이 약해지고 데이터만 오가는 코드가 됩니다. 반대로 VO를 제대로 사용하면 “금액”, “주소”, “상태” 같은 개념이 코드에 명확하게 드러나고, 버그와 잘못된 값 입력을 자연스럽게 막을 수 있습니다. 즉, JavaBean은 프레임워크를 위한 객체이고, VO는 비즈니스를 위한 객체입니다.

 

정리

👉 JavaBean은 Spring과 같은 프레임워크가 데이터를 처리하기 쉽게 만든 규칙이고, Value Object는 도메인 개념을 정확하게 표현하기 위한 객체입니다. Spring 애플리케이션을 잘 만들기 위해서는, 데이터 전달에는 JavaBean을 쓰고, 비즈니스 개념에는 VO를 사용하는 것이 가장 좋은 구조입니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.