본문 바로가기
Spring

POJO(Plain Old Java Object)

by xogns93 2024. 8. 5.

POJO

POJO(Plain Old Java Object)는 특별한 규약이나 상속 없이 순수하게 자바 언어만으로 작성된 객체를 의미합니다. 이는 특정 프레임워크나 라이브러리에 종속되지 않고, 자바 객체 본연의 형태를 유지하는 것을 강조합니다. POJO는 다음과 같은 특징을 가지고 있습니다:

  1. 간단성: POJO는 복잡한 프레임워크 인터페이스나 클래스를 상속받지 않습니다. 대신, 표준 자바 클래스로서 필요한 필드, 메서드(게터와 세터 포함)를 가지며, 다른 일반 자바 객체처럼 작동합니다.
  2. 재사용 가능성과 테스트 용이성: POJO는 의존성이 적기 때문에 다른 환경에서 재사용하기 쉽고, 단위 테스트하기에도 간편합니다.
  3. 투명성: POJO는 특정 프로토콜이나 환경에 종속되지 않기 때문에 코드의 명확성과 이해하기 쉬움을 제공합니다.
  4. 프레임워크 독립성: POJO는 특정 기술 스택에 종속되지 않기 때문에, 다양한 프레임워크와 기술에서 활용될 수 있습니다. 예를 들어, Spring이나 Hibernate 같은 프레임워크는 POJO를 이용하여 프로그래밍 모델을 제공하고, 개발자가 비즈니스 로직에 집중할 수 있도록 돕습니다.
  5. 직렬화가능: POJO는 자바의 직렬화 인터페이스를 구현할 수 있어, 네트워크를 통한 객체의 전송이나 객체의 영속화가 필요할 때 유용하게 사용됩니다.
public class Person {
    // 필드 (private으로 캡슐화)
    private String name;
    private int age;

    // 매개변수가 없는 생성자
    public Person() {
        // 기본 생성자
    }

    // 매개변수가 있는 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // name 필드에 대한 게터 메서드
    public String getName() {
        return name;
    }

    // name 필드에 대한 세터 메서드
    public void setName(String name) {
        this.name = name;
    }

    // age 필드에 대한 게터 메서드
    public int getAge() {
        return age;
    }

    // age 필드에 대한 세터 메서드
    public void setAge(int age) {
        this.age = age;
    }
}

이러한 특징 때문에 POJO는 자바 기반의 애플리케이션 개발에서 널리 활용되며, 간단하면서도 강력한 개발 방식을 제공합니다.

POJO Vs JavaBeans

POJO(Plain Old Java Object)와 JavaBeans는 자바 프로그래밍 언어에서 사용되는 두 가지 종류의 객체지만, 서로 목적과 특징에 차이가 있습니다. 그들의 관계를 이해하려면 먼저 각각의 특징을 알 필요가 있습니다.

POJO (Plain Old Java Object)

  • 목적: 자바의 복잡성을 최소화하고, 간단하게 객체를 정의하려는 목적으로 사용됩니다.
  • 특징: 복잡한 클래스 계층이나 프레임워크에 의존하지 않고, 순수한 자바 객체로 구성됩니다. 어떠한 클래스를 상속받거나 인터페이스를 구현하지 않아도 되며, 특별한 제약을 받지 않습니다.

JavaBean은 자바의 재사용 가능한 소프트웨어 컴포넌트 모델입니다. JavaBean은 특정 규약을 따르는 자바 객체로, 주로 GUI 컴포넌트나 엔터프라이즈 애플리케이션에서 사용됩니다. JavaBean은 다음과 같은 규칙을 준수합니다:

  1. 기본 생성자: 매개변수가 없는 기본 생성자를 가져야 합니다.
  2. 필드 접근을 위한 getter와 setter 메서드: 모든 필드는 private로 선언되고, 필드 접근을 위한 public getter와 setter 메서드를 가져야 합니다.
  3. 직렬화 가능: Serializable 인터페이스를 구현하여 객체의 직렬화가 가능해야 합니다.

 

POJO와 JavaBeans의 관계

POJO와 JavaBeans는 모두 자바 객체지만, JavaBeans는 좀 더 특정한 규칙과 구조를 따라야 하는 반면, POJO는 그러한 제약이 없습니다. JavaBeans는 POJO의 하위 집합으로 볼 수 있으며, 모든 JavaBeans는 POJO이지만 모든 POJO가 JavaBeans는 아닙니다. POJO는 단순하고 제약이 적어 다양한 형태로 구현될 수 있지만, JavaBeans는 컴포넌트 개발에 필요한 일련의 규칙을 따라야 합니다.

이 두 용어는 서로 연관되어 있지만, JavaBeans가 더 엄격한 규칙을 갖고, 그 기능을 특정 방식으로 구현해야 한다는 점에서 차이가 있습니다. JavaBeans는 프로퍼티, 이벤트, 리스너와 같은 요소를 사용하여 컴포넌트 기반의 개발에 적합하도록 설계되어 있습니다.