POJO

이재연·2021년 5월 11일

POJO란?

Plain Old Java Object, 오래된 방식의 간단한 자바 오브젝트라는 의미이다.

말 그대로 단순한 의미인 POJO는 왜 탄생하게 되었을까?

개발 초기에 생산성을 위해 다양한 프레임워크들이 만들어졌다. 프레임워크 사용으로 인해 생산성은 향상되었지만, 점점 프레임워크에 종속된 객체들을 사용하게 되었다.

개발 언어와 프레임워크의 주객이 전도되는 현상이 발생하였고, 이에 다시 특정 프레임워크나 모델에 종속되지 않은 순수한 자바 객체라는 POJO라는 개념이 나오게 되었다.

우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고. -마틴 파울러-

POJO의 특징

  • 자바 언어의 특징인 객체 지향을 적극적으로 활용할 수 있다.
  • 어떠한 규약이나 환경에 종속되지 않는다.
  • 필수 구현이 없기 때문에 코드가 간결해진다.
  • 특정 환경에 종속되지 않아 테스트가 자유롭다.

POJO와 Java Bean

POJO는 순수한 자바 객체라는 의미이다.

서블릿을 사용하기위해서는 미리 정의된 클래스를 확장해서 구현해야 한다. 이는 POJO가 아니다.

예시)


public class ServletExample extends HttpServlet {
  ...
}

확장이나 상속이 없는 순수한 객체이다. 기능을 사용하기 위해 강제로 구현한 객체가 아니라면 POJO이다.

예시)

class MyObject {
  ...
}

POJO는 Java Bean과 자주 비교된다. Java Bean은 몇 가지 규칙이 더해진 POJO이다.

  • Java Bean 규칙
  1. 속성들은 private으로 선언하며 getter와 setter를 가지고 있어야 한다.
  2. getter와 setter는 get속성, set속성 형태로 선언해야 한다.
  3. 기본 생성자를 가지고 있어야 한다.
  4. 직렬화 되어야 한다. (Serializable을 상속)

예시)

class MyBean implements Serializable {

  private int numberValue;
  private String stringValue;
  
  public MyBean(){
  }
  
  public getNumberValue(){
    return this.numberValue;
  }
  
  public setNumberValue(int numberValue){
    this.numberValue = numberValue;
  }
  
  ...

}

참조

https://ko.wikipedia.org/wiki/Plain_Old_Java_Object
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF
https://limmmee.tistory.com/8
https://www.baeldung.com/java-pojo-class

0개의 댓글