POJO vs JavaBean

2025. 4. 23. 13:51High Level Programming Language/Learning the Java Language

POJO(Plain Old Java Object)와 JavaBean은 모두 "순수한 자바 객체"를 의미하지만, 용도와 규칙, 그리고 프레임워크 친화성 측면에서 차이가 있습니다. 아래에서 두 개념을 명확히 비교해드리겠습니다.

 

✅ POJO vs JavaBean 비교 정리

구분 POJO (Plain Old Java Object) JavaBean
정의 아무런 제약 없이 작성된 순수 자바 객체 특정 명명 규칙을 따르는 자바 객체
필수 조건 없음 (제약 거의 없음) 1) public 기본 생성자
2) private 필드
3) getter/setter 메서드
생성자 어떤 생성자든 가능 반드시 기본 생성자(no-arg constructor) 필요
접근자 필드 접근 방식 자유 반드시 getter/setter로 필드 접근
접근 제어자 필드 public 가능 필드는 반드시 private
상속 제한 없음 없음
Serializable 구현 선택 선택 (빈 클래스가 데이터를 담는 목적이 강할 경우 자주 사용)
사용 목적 일반적인 도메인 모델, DTO 등 JSP, JSF, Spring 등의 프레임워크에서 속성 자동 설정 시 사용
프레임워크 호환성 낮음 (명확한 명명 규칙 없으면 자동 설정 어려움) 높음 (명명 규칙에 따라 자동 주입 및 바인딩에 유리)

 

✅ 예시로 비교

✅ POJO 예시

public class User {
    public String name;   // public 필드도 허용됨
    public int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
  • 규칙 없음
  • 자유롭게 필드 public access modifier 가능
  • 생성자에 제약 없음

✅ JavaBean 예시

public class UserBean implements java.io.Serializable {
    private String name;
    private int age;

    // 디폴트 생성자
    public UserBean() {}

    // Getter & Setter
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  • 반드시 private 필드, public getter/setter
  • 디폴트 생성자 필수
  • 직렬화도 종종 사용

 

✅ 언제 POJO, 언제 JavaBean?

상황 선택
단순 데이터 모델, 내부 로직, 유연한 설계 필요 POJO
Spring, JSP, JSON 바인딩, 데이터 전송 객체 필요 JavaBean

 

✅ 결론 요약

  • POJO는 아무 제약 없이 순수한 자바 클래스. 편리하지만 프레임워크에서 자동으로 속성 주입하거나 직렬화하기엔 제약이 있음.
  • JavaBean은 특정 규칙(get/set, 기본 생성자 등)을 따라야 하며, Spring이나 JSP 등 프레임워크와의 데이터 바인딩, 속성 자동 주입에 최적화되어 있음.