해당 정보를 기록하게 된 이유
스프링을 하면서 POJO 라는 명칭은 많이 들어보았는데, 단 한 번도 찾아보거나 관심을 가졌던 적이 없어서
한 번은 그래도 알아보아야 겠다 라고 생각하여 이번 기회에 찾아보고 정리하게 되었다.
POJO (Plain Old Java Object)
POJO는 Plain Old Java Object의 약자로, 말 그대로 오래된 방식의 자바 오브젝트라는 것이다. 점차 중량 프레임워크들을 사용하게 되면서 프레임워크에 종속된 객체를 만들게 된 것에 반발해서 사용된 용어이다.
참조글을 확인해보고 정리한 더 쉬운 말로는, 객체 지향의 원리에 충실하면서 환경이나 기술에 종속되지 않고 재활용될 수 있는 방식으로 설계된 오브젝트를 뜻한다.
POJO의 조건
- 특정 규약에 종속되지 않는다.
- 자바 언어와 반드시 필요한 API 외에는 종속되지 말아야 한다.
- 특정 클래스를 상속해서 만들어야 하면, 단일 상속의 제한으로 객체지향적 설계 기법에 어려움이 생기므로 POJO가 아니다.
- 특정 환경에 종속되지 않는다.
- 특정 기업의 프레임워크나 서버 위에서만 동작이 가능한 코드는 POJO가 아니다.
- 즉, POJO는 환경에 독립적 이어야 한다.
- 예를 들어, 나중에 웹 컨트롤러와 연결되어 사용될 것이 분명해도 직접적으로 웹 이라는 환경으로 제한하는 오브젝트나 API에 의존해서는 안된다. (웹 이외의 클라이언트가 사용하지 못하기 때문이다.)
- 객체 지향적에 충실해야 한다.
- 객체 지향의 기본적인 개념(상속, 다형성)에 맞춰 만들어져야 한다.
POJO의 장점
- 기술과 환경에 종속되지 않기 때문에, 이는 깔끔한 코드를 작성할 수 있다는 것이다.
- 테스트 작성과 검증이 쉽다
POJO 프레임워크
- POJO 프로그래밍이 가능하도록 기술적인 기반을 제공하는 것이다.
- 자세히는 POJO를 이용한 애플리케이션 개발이 가진 특징과 장점을 그대로 살리면서 EJB에서 제공하는 엔터프라이즈 서비스와 기술을 그대로 사용할 수 있도록 도와주는 것이다.
- 하이버네이트와 스프링이 대표적인 POJO 프레임워크이다.
EJB(Enterprise JavaBeans)란?
기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다.
하이버네이트(Hibernate)란?
하이버네이트는 자바 환경에서의 ORM 매핑 솔루션이다. 여기서 ORM은 도메인 모델 객체들을 관계형 데이터베이스 테이블로 매핑 시키는 기술이다. 하이버네이트는 JPDA의 구현체로 Spring에서 ORM을 사용하기 위해서 JPA 표준 인터페이스를 정의해두었고, 이러한 JPA를 구현하는 것으로 POJO를 유지하면서 실행할 수 있다.
참조글
- https://ko.wikipedia.org/wiki/Plain_Old_Java_Object
- https://doing7.tistory.com/81
- https://yjksw.github.io/spring-pojo/
- https://dzone.com/articles/what-is-the-difference-between-hibernate-and-sprin-1