POJO


Plain Old Java Object, POJO 는 프레임워크 인터페이스 또는 클래스를 구현하거나 확장하지 않은 단순한 클래스로, Java 에서 제공하는 API 이외에 종속되지 않는 객체를 의미한다.

Java EE 등의 중량 프레임워크들이 등장하면서 프레임워크에 종속된 무거운 객체들이 만들어지고 사용되는 것에 자바의 객체지향성을 되찾기 위해 등장한 용어이다.

POJO 는 특정 환경에 종속되지 않기 때문에 코드가 간결하고 테스트 자동화에 유리하다는 장점이 존재한다.

POJO 프레임워크


POJO 프레임워크는 POJO 를 사용하는 장점과 EJB 등에서 제공하는 엔터프라이즈 서비스와 기술을 그대로 사용할 수 있도록 도와주는 프레임워크를 의미한다. 대표적인 POJO 프레임워크로 Spring 과 Hibernate 가 있다.

Spring

Spring 은 IoC Container 를 제공함으로써 엔터프라이즈 서비스에서 POJO 기반으로 만든 비즈니스 오브젝트를 사용할 수 있게 해준다.

  • 인스턴스들의 생명주기를 관리
  • 특정 인터페이스를 구현하거나 상속할 필요가 없음
  • 라이브러리를 지원하기에 용이함
  • 객체가 가벼움
  • AOP 기술을 통해 POJO 개발을 더 쉽게 만들어 줌

Hibernate

Hibernate 는 순수한 POJO 를 통해 Persistence 기술과 ORM 기술을 사용할 수 있게 만드는 POJO 기반의 Persistence 프레임워크이다. 특히 POJO 엔티티들을 객체지향적으로 설계하고 구현할 수 있다는 장점이 있다.

POJO 의 기준


객체지향적으로 설계 되었는가?

반복적인 템플릿 코드와 테스트하기 힘든 구조, 확장 및 재활용의 어려움이 있다면 EJB 의 문제점을 여전히 가지고 있다고 볼 수 있다.

테스트가 용이한가?

잘 설계된 POJO 애플리케이션은 테스트 자동화가 편리하다. 테스트 작성이 편리하면 더 꼼꼼한 테스트를 작성할 수 있고 이는 코드 검증과 품질 향상에 유리해지며 잘 작성된 테스트는 리팩터링을 진행할 여유를 제공하여 보다 나은 POJO 설계로 변경할 수 있는 기회를 제공한다.

정리


진정한 POJO 란 객체지향 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다.

References