티스토리 뷰

Spring

[Spring] POJO(Plain Old Java Object)

MAENCO 2021. 8. 11. 14:48
반응형
POJO

POJO를 잘 이해하려면 조금의 역사공부(?)가 필요하다

옛날 옛날에 자바 진영에서 EJB(Enterprise Java Bean)이라는 것을 만들었다

하지만 과도한 엔지니어링 때문에 이를 사용하는 것이 너무너무 복잡하고 어려웠다고 한다

그리고 제일 중요한 것은 매우 느렸다고 한다

(앞으로도 EJB를 볼일은 없을 것 같으니 자세한 내용은 찾아보지 않았다)

 

그러하여 이 당시에 이렇게 EJB 지옥불에 타 죽느니 Plain Old Java Object, 즉 오래된 자바 객체로 돌아가자라는 열풍이 불었다고 한다

막상 POJO가 뭔지 보면 정말 단순하다

public class Pojo {

    private String pojoName;
    private int pojoNumber;

    public String getPojoName() {
        return pojoName;
    }

    public void setPojoName(String pojoName) {
        this.pojoName = pojoName;
    }

    public int getPojoNumber() {
        return pojoNumber;
    }

    public void setPojoNumber(int pojoNumber) {
        this.pojoNumber = pojoNumber;
    }
}

이렇게 순수하게 setter, getter의 메서드로 만들어진 객체들

이 객체들이 바로 POJO이다

 

POJO의 조건

좀 더 자세하게 POJO가 되기 위한 조건을 살펴보자면 대략 아래와 같다고 한다

 

1. 특정 규약에 종속되지 않는다

-> 꼭 필요한 API 외에는 종속되지 않아야 한다 이는 자바가 하나의 클래스만 상속할 수 있기 때문에(단일 상속 제한)

특정 규약을 따르게 하려면 규약에서 제시하는 특정 클래스를 상속하도록 요구하여야 한다

 

2. 특정 환경에 종속되지 않는다

-> 예를 들어 비즈니스 로직을 가지고 있는 클래스가 웹이나 환경정보 같은 특정 환경에 대한 클래스를 사용해서는 안된다

 

3. 단일 책임 원칙을 지키는 클래스

-> 객체 지향에 충실하면서 재사용할 수 있는 방식으로 설계하여야 한다

 

Spring Framework

의존성 주입(IoC/DI)을 통해서 특정 규약에 종속되지 않고

서비스 추상화(PSA)를 통해서 특정 환경에 종속되지도 않으며

AOP를 통해 단일 책임 원칙을 더 확고히 해준다

 

이로써 스프링 프레임워크의  주요 기술인 IoC/DI , AOP, PSA 등을 활용하여 POJO로 애플리케이션을 개발할 수 있게 되었다

 

더보기

개인 학습을 위해 작성되는 글입니다.

제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.

 

참조 링크:

https://happyer16.tistory.com/entry/POJOplain-old-java-object%EB%9E%80

https://m.blog.naver.com/weekamp/186678831

https://codedot.co.kr/5

 

 

반응형
댓글