[Spring]POJO

Tomas.Lee·2022년 1월 19일
0

web study

목록 보기
7/14

POJO(Plain Object Java Object) - 평범한 구식 자바 오브젝트

스프링을 공부하면 할 수록 새롭게 접하는 용어가 매우 많다.

그 중 오늘은 POJO에 대해 다뤄보겠다.

POJO의 등장배경

과거엔 서버 애플리케이션을 개발하는데 복잡한 로직이 없었고 가벼웠기에

JDK , Servlet으로도 충분히 구현이 가능했다.

하지만 점점 시스템의 기능들이 다양해지고 복잡해지며 서버 개발 역시 복잡해졌다.

따라서 기존의 자바 시스템만으로는 개발이 불가능해지고 이를 해결해야할 대안이 필요했다.

이때, SUN사에서 개발한 EJB가 등장했다.(EJB에 대한 설명은 여기로)

EJB의 등장은 개발자들에게 혁신을 가져다줬다.

EJB 등장 이후, EJB는 표준 기술로 자리잡게 되었다

하지만 업그레이드가 무조건 좋은 것은 아니었다.

기존 JDK, Servlet에 비해 무겁고 복잡한 EJB를 소수의 애플리케이션을 위해

굳이 필요없는 다른 다수의 애플리케이션이 사용하는 것은 매우 낭비였다.

또한 EJB를 활용하기 위해선 비싼 AWS도 구입해야 했고, 복잡한 IDE 설정도 필요했기에 불평이 존재했다.

결국, 이런 불평을 해결하기 위해 POJO가 등장했다.

EJB와 같이 복잡한 기능이 필요없는 애플리케이션은 POJO를 통해 간단하게 일을 처리할 수 있게 되었다.

POJO의 특징

  • 특정 규약에 종속되지 않는다.
  • 특정 환경에 종속되지 않는다.
  • 객체 지향 원리에 충실해야 한다.

=> EJB의 경우, implements, extends를 사용하는 코드들이 매우 많았다.

즉, 참조하고 종속되는 부모class가 매우 많기에 나중에 꼬이게 되면 원인을 찾는게 매우 번거로워지며

상속관계를 파악할때 매우 헷갈리는 문제가 있다.

하지만 POJO는 종속에서 자유롭기에 간단한 자바 객체만을 가지고 일을 처리할 수 있다.

public class BoardVO {
    
    private int code;
    private String title = "";
    private String content = "";
    private String writer = "";
    private String reg_datetime = "";
    
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getWriter() {
        return writer;
    }
    public void setWriter(String writer) {
        this.writer = writer;
    }
    public String getReg_datetime() {
        return reg_datetime;
    }
    public void setReg_datetime(String reg_datetime) {
        this.reg_datetime = reg_datetime;
    }
 
}

위 코드는 웹 개발에 사용하는 VO파일인데 단순한 getter/setter로만 이뤄져있다.

이러한 방식의 자바 개발 기법을 POJO라고 한다.

POJO의 등장으로인해 효율성이 높아졌으며 자바가 추구하는 객체지향 원칙을 되살릴 수 있었다.


참고자료

profile
System.println.out("Hello World");

0개의 댓글