Spring - POJO란?

Plain Old Java Object

Posted by Yan on August 6, 2021

POJO Plain Old Java Object

  • Java EE등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 무거운객체를 만들게 된 것에 반발해서 사용하게 된 용어

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

  • 마틴 파울러 -
  • 진정한 POJO란 객체지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.
old?
  • 새로운 방식은 뭐고 오래된 방식은 뭔가?
    • ORM이 생기고 나서, ORM 프레임워크를 사용해 DB에 접근하기 시작 -> hibernate에 의존하게 된다.
    • 이렇게 특정 기술에 종속되어 동작하는 것은 새로운 방식.
    • POJO가 말하는 plain old하다는 것은 이런 기술에 의존하지 않는 것이다.

왜 POJO를 지향하나?

  • 스프링 프레임워크 이전에는 특정 엔터프라이즈 기술을 사용할 때 그 기술을 직접적으로 사용하는 객체를 설계했다.
  • 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수에 어려움이 생겼다.
  • 특정 기술의 상속받거나 직접 의존하게 되어 확장성이 매우 떨어지는 단점이 있었다.
  • 따라서 객체지향 설계의 장점들을 잃어버리게 되었다.
  • 이를 해결하기 위해 POJO가 등장했다.

사용방법

스프링이 POJO를 유지하면서 Hibernate를 사용하려면

  • 스프링에서 정한 표준 인터페이스 JPA를 사용한다
  • ORM 프레임워크들은 이 JPA라는 표준 인터페이스에서 구현되어 실행된다.
  • 이것을 스프링의 PSA라고 한다.

reference

POJO - (Plain Old Java Object)란 뭘까?