[Spring]POJO : Plain Old Java Object

김피자·2023년 3월 1일
0

Spring

목록 보기
14/30

오늘은 포조 포조에 대해 알아봅시다.
나는 개념을 잡을 때 왜 이게 필요했는지 배경부터 살피는 편이라 EJB부터 시작해보자><

EJB는 객체 지향성을 감소시킨다.

EJB(Enterprise Java Bean)는 엔터프라이즈 개발을 단순화하기 위해 Sun 사에서 만들어낸 Java스펙으로 스프링이 등장하기 이전에는 EJB가 자바 엔터프라이즈 애플리케이션 개발 시장을 독점하고 있었다.

하지만!! EJB에는 코드들이 EJB 기술에 지나치게 종속되어있다는 단점을 가지고 있다. import 선언문부터 implements, 인스턴스 변수까지 코드가 EJB에 완전히 종속되는데 이는 가독성이 떨어져 유지보수가 어렵고, 의존성이 높아 확장성이 매우 떨어져 점점 객체 지향성을 잃어가게 된다.

이처럼 프레임워크에 종속적인 개발을 진행하는 것에 반발하여 등장한 개념이 POJO!!!

🥲 : 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수가 어렵고 확장성이 매우 떨어지는 단점이 있었습니다. 이는 객체지향 언어인 자바가 객체지향의 장점을 잃어버리게 되는 것 입니다. 그래서 POJO라는 개념이 등장했습니다.

POJO의 등장

말 그대로 해석하면 오래된 방식의 간단한 자바 오브젝트라는 의미로 프레임워크 인터페이스나 클래스를 구현하거나 확장하지 않는 단순한 클래스

토비의 스프링 책은 POJO에 대해 이렇게 말한다.

진정한 POJO란 객체 지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.

POJO 기본 형태

public class Member {
    private String id;
    private String pw;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPw() {
        return pw;
    }

    public void setPw(String pw) {
        this.pw = pw;
    }
}

이처럼 가장 기본적인 형태의 Java객체를 POJO라고 한다.

EJB 등 에서 처럼 다른 클래스나 인터페이스를 extends 및 implements 받아 메서드를 구현해야 하는 클래스가 아닌 Getter, Setter로 구성된 가장 순수한 형태의 기본 클래스를 POJO라 한다.


POJO Framework

POJO 프레임워크는 POJO를 사용하는 장점과 EJB에서 제공하는 서비스와 기술을 그대로 사용할 수 있도록 도와주는 프레임워크로 많은 종류가 있다.

그 중 스프링은 엔터프라이즈 서비스들을 POJO기반으로 만든 비즈니스 오브젝트에서 사용할 수 있게 해준다.
IoC(제어의 역전) Container 안에서 POJO를 구성하고 관리하는 것이 핵심으로 POJO를 잘 다루는 프레임워크가 바로 스프링 프레임워크다.

Java EE 등을 사용할 때에 비해 특정 인터페이스를 구현하거나 상속할 필요가 없고 라이브러리를 지원해 용이하고 객체 또한 가벼운 것이 특징이다.


POJO 개발

POJO Framework를 사용한다해서 POJO 개발을 하는 것은 아니다.
아래 사항들을 확인해보자.

1. 객체 지향적으로 설계를 했나요?

반복적인 코드와 테스트하기 힘든 구조, 확장과 재활용의 어려움이 남아있다면 그것은 EJB의 문제점을 여전히 가지고 있는 것이다.

2. 테스트가 용이한가요?

잘 만들어진 POJO 애플리케이션은 자동화된 테스트 코드 작성이 편리하다.


결론

오늘은 포조포조에 대해 알아보았다.
아무래도 POJO의 가장 큰 장점은 특정 규약이나 환경에 종속되지 않는 것이라고 생각한다.


출처
https://velog.io/@minhyung0237/POJOPlain-Old-Java-Object%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
https://dev-coco.tistory.com/82

profile
제로부터시작하는코딩생활

0개의 댓글