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는 다음과 같은 것을 해선 안됩니다.

 

  1. 미리 지정된 클래스를 extends 하는 것
public class Animal extends javax.servlet.http.HttpServlet { 
...
}

 

  1. 미리 정의된 인터페이스를 implement 하는 것.
public class Animal implements javax.ejb.EntityBean { 
...
}

 

  1. 미리 정의된 Annotation을 포함하는 것.
@javax.persistence.Entity
public class Animal { 
...
}

 

 

 

 

스프링의 핵심 : POJO

 

 

스프링 애플리케이션 = POJO를 이용해서 만든 애플리케이션 로직 + POJO가

어떻게 관계를 맺고 동작하는지 정의해놓은 설계정보

스프링의 주요 기술인 IoC/DI, AOP, PSA는 애플리케이션을 POJO로 개발할 수 있게 해주는 기술들이다.

그래서 POJO의 개념은 무엇일까?

 

 

 

 

# 더 알아본다면?

POJO와 자바빈의 차이?

링크

  • JavaBeans는 특별한 POJO의 변형

 

 

반응형

+ Recent posts