728x90
반응형
# POJO의 기원
포조는 Java EE 등으로 인해서 점점 무거워지는 객체에 대해서 반발하며 나타난 개념이다.
2000년 9월에 마틴 파울러(Martin Fowler), 레베카 파슨(Rebecca Parsons), 조쉬 맥킨지(Josh MacKenzie) 등이
시작하였으며 그 기원에 대한 내용은 마틴 파울러가 다음과 같이 말했다.
"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"
"우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데,
간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다.
그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고."
# POJO - Plain Old Java Object
- 평범한 java Object,즉 자바개발자가 마음대로 정의 할수 있는 객체라는 뜻이다.
- Object를 간단히 수퍼클래스로 둔 보통의 평범의 그자체 순수 자바클래스 라고 봐도 괜찮다.
- 특정 규약에 종속되지 않는 자바 객체
- POJO 는 가독성과 재사용성을 중요시하게 사용됩니다.
public class Animal {
String dog;
public String cat;
private int legs;
public Animal(String dog, String cat, int legs) {
this.dog = dog;
this.cat = cat;
this.legs = legs;
}
public getDog() {
return this.dog;
}
}
# 토비의 스프링에서의 POJO
그럼 특정 기술규약과 환경에 종속되지 않으면 모두 POJO라고 말할 수 있는가?
많은 개발자가 크게 오해하는 것 중의 하나가 바로 이것이다
. .. (중략)..
진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라
재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.
# 정의
이상적으로, POJO는 Java 언어 규약에 의해 강제된 것 이외의 제한에 구속되지 않는 Java 오브젝트 입니다.
따라서 POJO는 다음과 같은 것을 해선 안됩니다.
- 미리 지정된 클래스를 extends 하는 것
public class Animal extends javax.servlet.http.HttpServlet {
...
}
- 미리 정의된 인터페이스를 implement 하는 것.
public class Animal implements javax.ejb.EntityBean {
...
}
- 미리 정의된 Annotation을 포함하는 것.
@javax.persistence.Entity
public class Animal {
...
}
스프링의 핵심 : POJO
스프링 애플리케이션 = POJO를 이용해서 만든 애플리케이션 로직 + POJO가
어떻게 관계를 맺고 동작하는지 정의해놓은 설계정보
스프링의 주요 기술인 IoC/DI, AOP, PSA는 애플리케이션을 POJO로 개발할 수 있게 해주는 기술들이다.
그래서 POJO의 개념은 무엇일까?
# 더 알아본다면?
POJO와 자바빈의 차이?
⇒ 링크
- JavaBeans는 특별한 POJO의 변형
반응형
'프로그래밍언어 & 프레임워크 > 스프링(Spring)' 카테고리의 다른 글
싱글턴 패턴(Singleton Pattern) (0) | 2021.12.05 |
---|---|
[Spring Boot]Swagger 사용해보기(Gradle) (2) | 2021.12.03 |
@Controller와 DispatcherServlet이란? (0) | 2021.12.02 |
DI(Dependency Injection) 란? (0) | 2021.12.02 |
[Spring] form(폼)에서 put, delete 사용하기 (0) | 2021.11.18 |