POJO란?

지인호·2022년 1월 2일
0

TIL

목록 보기
1/28
post-thumbnail

Plain Old Java Object

오래된 방식의 단순한 자바 객체

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

-토비의 스프링 중-

POJO 가 나온 이유

Spring 이 나오기 이전, JavaEE 같은 중량 프레임워크 들을 사용하게 됨으로서, 해당 프레임 워크에 종속적인 중량 객체(무거운 객체) 를 사용하는것에 대해, 반발해서 사용하게된 용어/개념 이다.

  • 대표적인 중량 객체로는 JavaEE 에서 사용하는 EJB(Enterprise Java Bean) 등이 있다. 이러한 중량객체는 클래스간의 복잡한 의존관계를 가져, 관심사의 분리가 되지 않음으로 인한 불편함이 발생한다. (OCP 원칙 위반)
  • 이를 해결하고자 나온 대표적인 POJO 로는 Getter 와 Setter 만 가진 단순한 데이터 클래스 등이 있다. 💡 Getter Setter 는 보통 lombok 으로 구현되니 특정 기술에 종속적인게 아니냐고?
    lombok 이 없어도, Getter Setter 는 구현할 수 있으며, class 코드로 컴파일시 lombok 의 어노테이션은 모두 그에 해당하는 pure java code 로 변환된다.

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

DTO 는 POJO 일까? Entity는?

  • 대부분의 DTO 는 POJO 이지만, POJO 가 아닌것도 있을 수 있다 DTO, Entity 와 POJO 는 완전히 다른 개념 이기 떄문이다.
  • 다만, Spring Data JPA 의 Entity 는 모두 POJO 가 아니다 말그대로 SpringDataJPA 라는 기술에 종속적이기 떄문이다.
profile
테오의 스프린트 17기 퍼실리테이터

0개의 댓글