POJO Plain Old Java Object
- Java EE등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 무거운객체를 만들게 된 것에 반발해서 사용하게 된 용어
우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고.
- 마틴 파울러 -
- 진정한 POJO란 객체지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.
old?
- 새로운 방식은 뭐고 오래된 방식은 뭔가?
- ORM이 생기고 나서, ORM 프레임워크를 사용해 DB에 접근하기 시작 -> hibernate에 의존하게 된다.
- 이렇게 특정 기술에 종속되어 동작하는 것은 새로운 방식.
- POJO가 말하는 plain old하다는 것은 이런 기술에 의존하지 않는 것이다.
왜 POJO를 지향하나?
- 스프링 프레임워크 이전에는 특정 엔터프라이즈 기술을 사용할 때 그 기술을 직접적으로 사용하는 객체를 설계했다.
- 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수에 어려움이 생겼다.
- 특정 기술의 상속받거나 직접 의존하게 되어 확장성이 매우 떨어지는 단점이 있었다.
- 따라서 객체지향 설계의 장점들을 잃어버리게 되었다.
- 이를 해결하기 위해 POJO가 등장했다.
사용방법
스프링이 POJO를 유지하면서 Hibernate를 사용하려면
- 스프링에서 정한 표준 인터페이스 JPA를 사용한다
- ORM 프레임워크들은 이 JPA라는 표준 인터페이스에서 구현되어 실행된다.
- 이것을 스프링의
PSA
라고 한다.