POJO(Plain Old Java Object)

2025. 5. 14. 16:45JAVA/JAVA 설계 철학

☀️ POJO(Plain Old Java Object)란?

POJO는 Plain Old Java Object의 줄임말로, 특별한 제한 없이 만들어진 가장 순수한 형태의 자바 객체를 뜻한다.
이는 2000년대 초, Java가 무겁고 복잡한 EJB(Enterprise JavaBeans)에 의존하던 시절을 벗어나, 개발자들이 간단하고 유연한 객체지향 개발을 추구하면서 탄생한 용어다.

☀️ 정의와 철학 

POJO는 다음 세 가지 기주을 충족하는 객체를 말한다.

  1. 특정 Java 프레임워크의 API를 상속하거나 구현하지 않는다.
  2. 특정한 어노테이션(@Entity, @Component 등)에 의존하지 않는다
  3. 복잡한 설정 없이 자바 언어 자체로만 정의된다.

즉, POJO는 프레임워크 독립적인 객체지향 프로그래밍의 순수성을 지키는 도구다

 

🌕 POJO의 구조적 특징

필드 (Fields) 일반적으로 private 접근제한자를 사용
생성자 (Constructors) 기본 생성자 및 필요 시 파라미터 생성자
접근자 (Getter/Setter) 속성값을 읽고 쓰는 public 메서드
기타 메서드 필요한 경우 toString(), equals(), hashCode() 등 재정의 가능
상속 및 구현 extends, implements 없이 독립적 구조 권장

 

📃 예시 코드 (순수 POJO)

public class Animals {
    // Fields
    private String name;
    private String animalType;
    private int age;

    // Default Constructor
    public Animals() {}

    // Constructor
    public Animals(String name, String animalType, int age) {
    	super();
        this.name = name;
        this.animalType = animalType;
        this.age = age;
    }

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

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

    public String getAnimalType() {
        return animalType;
    }

    public void setAnimalType(String animalType) {
    	this.animalType = animalType;
    }

    public int getAge() {
    	return age;
    }

    public void setAge(int age) {
    	this.age = age;
    }
}

 

🌕 POJO와 다른 객체 모델과의 비교

구분 POJO JavaBean EJB(구버전)
목적 일반적인 데이터
모델 객체
설정 및 통신용 객체 엔터프라이즈 비즈니스
로직 컴포넌트
프레임워크 의존성 없음 약함
(Serializable 등 권장)
강함
(java.ejb.* 의존)
생성자 제약 없음 기본 생성자 필수 컨테이너 관리
사용 위치 도메인 모델, DTO 등 다양함 JavaBeans 스펙 기반 시스템 J2EE 기반 시스템

 

💡 POJO가 중요한 이유

1. 테스트 용이성 (Testability)

  • 프레임워크에 독립적이기 때문에 단위 테스트가 쉬움
  • Mockito 같은 라이브러리 쉽게 mock 처리 가능

2. 프레임워크 비침투성 (Non-invasive Design)

  • 객체가 특정 프레임워크에 묶이지 않아, 재사용성과 유지보수성이 뛰어남

3. 의전성 감소 (Loose Coupling)

  • 구현과 환경(예 : Spring, JPA 등)이 분리되어, 구조가 유연함

4. 객체지향적 설계 원칙 준수

  • 캡슐화, 정보은닉, 단일 책임 원칙(SRP) 등을 잘 실현 가능

 

🧭 결론

POJO는 "좋은 자바 객체"의 기준이다.

POJO는 자바 객체의 본질에 가까운 설계 철학이며, 프레임워크 중심 개발에서 객체중심 개발로의 전환점을 상징한다.
개발자는 POJO 기반으로 시스템을 설계하면 높은 유지보수성, 테스트 용이성, 유연성을 확보할 수 있다.