*POJO란?
Plain Old Java Object의 줄임말로 2000년 컨퍼런스에서 마틴파울러가 처음으로 사용하였다. 어떤한 기술에도 종속되어있지 않는 순수한 객체 상태를 의미한다.
진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그런 POJO에 애플리케이션의 핵심 로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 할 수 있다. -(토비의 스프링3 672p)
POJO라는 용어는 이후에 주로 특정 자바 모델이나 기능, 프레임워크 등을 따르지 않은 자바 오브젝트를 지칭하는 말로 사용되었다. 스프링 프레임워크는 POJO 방식의 프레임워크이다.
*POJO 프레임워크 등장배경
EJB의 비전은 'EJB는 애플리케이션 개발을 쉽게 만들어준다. 애플리케이션 개발자는 로우레벨의 기술들에 관심을 가질 필요도 없다. 하지만, EJB는 불필요할만큼 과도한 엔지니어링으로 실패한 대표적인 케이스였다. 가장 최악의 문제점은 EJB 스펙을 따르는 비즈니스 오브젝트들은 객체지향적인 특징과 장점을 포기해야했다는 것이었다.
EJB 빈은 상속과 다형성등의 혜택을 제대로 누릴 수 없었다. 그에 따라 등장한 POJO 프레임워크는 POJO를 이용한 애플리케이션 개발이 가진 특징과 장점을 그대로 살리면서 EJB에서 제공하는 엔터프라이즈 서비스와 기술을 그대로 사용할 수 있도록 도와주는 프레임워크, 나아가 기존의 EJB에서보다 훨씬 더 세련되고 나은 방법을 제공한다. 이 중의 대표적인 것이 Spring과 Hiberante이다.
* Hibernate란?
Hibernate는 자바환경의 ORM 매핑 솔루션이다. ORM은 도메인 모델 객체들을 관계형 데이터베이스 테이블로 매핑시키는 기술이다. Hibernate는 자바 기반의 ORM 도구로서 어플리케이션 도메인 객체를 관계형 데이터베이스 테이블로 매핑시키는 프레임워크를 제공한다.
또한 Hiberante는 JPA의 구현체이다. Spring에서 ORM을 사용하기 위해 JPA 표준 인터페이스를 정의해두었고, JPA를 구현하는 것으로 POJO를 유지하면서 실행할 수 있다.
(Hiberante가 JPA의 구현체라고해서 꼭 JPA를 사용하기 위해 Hibernate를 이용할 필요가 없다. JPA의 구현체인 DataNucleus, EclipseLink 등 다른 종류를 사용해도 된다.)
* 출처
https://martinfowler.com/bliki/POJO.html
https://dzone.com/articles/what-is-the-difference-between-hibernate-and-sprin-1
'학습 > Java' 카테고리의 다른 글
REST, RESTful API (0) | 2021.08.01 |
---|---|
SOLID 원칙 (0) | 2021.08.01 |
전략패턴이란? (0) | 2021.08.01 |
map vs flatMap (0) | 2021.05.16 |
JJWT (1) | 2021.03.03 |