POJO(Plain Old Java Object)
명확하게 이거다 하고 정의 내리기는 어려워서 왜 나왔는지, 목적은 무엇인지 이해하는 데 초점을 두었다.

스프링의 핵심은 POJO이다.
위의 그림은 스프링으로 개발한 애플리케이션의 기본 구조를 보여준다. 스프링 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드와, POJO가 어떻게 관계를 맺고 동작하는지를 정해놓은 설계정보로 구분된다.
DI의 기본 아이디어는 유연하게 확장 가능한 오브젝트를 만들어두고 그 관계는 외부에서 다이나믹하게 설정해준다는 것이다.
이런 DI의 개념을 애플리케이션 전반에 걸쳐 적용하는 것이 스프링의 프로그래밍 모델이다.
스프링의 주요 기술인 IoC/DI, AOP와 PSA (Portable Service Abstraction)는 애플리케이션을 POJO로 개발할 수 있게 해주는 가능기술(enabling technology)이라고 불린다.
POJO는 마틴 파울러 Martin Fowler가 2000년에 컨퍼런스 발표를 준비하다가 만들어낸 용어라고 한다.
마틴 파울러는 당시 EJB처럼 복잡하고 제한이 많은 기술을 사용하는 것보다 자바의 단순한 오브젝트를 이용해 애플리케이션의 비즈니스 로직을 구현하는 편이 낫다고 생각했다. 그러나 개발자들이 이를 꺼렸고, 마틴 파울러는 그 이유를 EJB 같은 그럴싸한 이름이 없기 때문이라 생각했다. 그래서 '간단한 자바 오브젝트를 사용합니다'라는 말에 멋진 이름을 붙여준 것이다.
"우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 어쩌면 그다지도 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고."
"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely." - 마틴 파울러-
즉, 더 이상 EJB를 쓰지말고 POJO를 기반으로 설계를 하자는 의미이다.
POJO를 이해하기 위해서는 스프링이 나오게 된 배경을 이해해야 할 것 같다.
밑의 블로그에 자세하게 나와있어 참고하면 좋을 것 같다.
[토비의 스프링] 8장. 스프링이란 무엇인가?
목차8.1 스프링의 정의 - 애플리케이션 프레임워크 - 경량급 - 자바 엔터프라이즈 개발을 편하게 - 오픈소...
blog.naver.com
* POJO의 장점
1. 특정 규약에 종속되지 않아 객체지향 설계를 할 수 있다.
2. 특정 환경에 종속되지 않아 테스트코드 작성이 용이하다.
3. 로우레벨 코드와 비지니스 코드의 분리가 가능하다.
참고
POJO 정리
POJO에 대해서 다룹니다.
velog.io
'개발 > Spring&SpringBoot' 카테고리의 다른 글
단위테스트 (Unit Test) 작성하기 (0) | 2023.01.19 |
---|---|
Spring DI와 IoC (0) | 2023.01.19 |
RestTemplate 이용해서 naver 검색 API 사용하기 (0) | 2023.01.19 |
Spring global 예외처리 방법 (1) | 2023.01.19 |
빌더 패턴(Builder Pattern) 만들기 + Lombok이용 (0) | 2021.12.03 |