[Day 25 | Spring] POJO(Plain Old Java Object)란?

y♡ding·2024년 11월 15일
0

데브코스 TIL

목록 보기
156/163

POJO(Plain Old Java Object)는 특정 프레임워크나 환경에 종속되지 않고 순수한 자바 언어로 작성된 객체를 의미합니다. 스프링을 비롯한 다양한 프레임워크에서 POJO는 프레임워크에 의존하지 않고 독립적인 비즈니스 로직을 작성할 수 있도록 하는 객체로, 개발자가 쉽게 사용할 수 있는 단순한 구조를 갖추고 있습니다.

POJO의 특징

  1. 프레임워크 독립성: POJO는 특정 프레임워크의 요구 사항이나 라이브러리에 종속되지 않습니다. 즉, Spring, Hibernate 등 특정 프레임워크에 맞춰 만들어진 객체가 아닌, 독립적으로 자바 언어의 표준만을 사용하여 작성된 객체입니다.
  2. 자바 표준 사용: POJO는 gettersetter 메서드를 통해 필드에 접근하고, 복잡한 상속 구조나 프레임워크의 특별한 인터페이스를 구현하지 않습니다. 단순한 클래스 구조를 갖추고 있어 유지보수가 용이합니다.
  3. 비즈니스 로직 중심: POJO는 비즈니스 로직을 작성하는 데 중점을 둡니다. 불필요한 의존성이나 코드 복잡성을 줄여, 코드의 가독성과 테스트 용이성을 높입니다.

POJO의 장점

  • 유연성: 특정 프레임워크에 종속되지 않아 다양한 환경에서 재사용이 가능하고, 코드 변경 없이 여러 프레임워크에서 사용될 수 있습니다.
  • 유지보수 용이성: 단순한 구조로 작성되므로 이해하기 쉽고, 코드의 유지보수가 간편합니다.
  • 테스트 용이성: 프레임워크에 의존하지 않으므로, 독립적인 단위 테스트가 용이합니다.

POJO와 스프링 프레임워크

스프링 프레임워크는 POJO를 기반으로 동작하며, POJO 객체를 관리하고 DI(Dependency Injection)와 AOP(Aspect-Oriented Programming)를 통해 객체 간의 관계를 설정하고 로직을 보조하는 방식으로 개발이 이루어집니다. 스프링은 객체 간의 관계 설정 및 부가적인 기능을 제공하면서도 POJO의 단순성을 유지할 수 있도록 설계되었습니다.

POJO 예제

아래는 POJO의 예제로, 단순한 User 객체를 보여줍니다.

public class User {
    private String name;
    private int age;

    public User() {}

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }

    public void printUserInfo() {
        System.out.println("User: " + name + ", Age: " + age);
    }
}

User 클래스는 순수하게 자바 표준만을 사용하여 작성된 POJO입니다. 스프링 IoC 컨테이너에 의해 빈으로 관리될 때도, 스프링은 이 객체에 아무런 변경을 가하지 않고 필요한 의존성을 주입하거나 초기화 메서드를 호출하는 방식으로 다룰 수 있습니다.

POJO가 중요한 이유

POJO는 코드의 독립성과 유지보수성을 보장하면서도 스프링과 같은 프레임워크가 제공하는 다양한 기능을 쉽게 활용할 수 있게 해줍니다. 이를 통해 개발자는 비즈니스 로직에만 집중할 수 있으며, 프레임워크에 종속적이지 않은, 단순하고 재사용 가능한 코드를 작성할 수 있습니다.

0개의 댓글