반응형

| POJO란 무엇인가 ?

Plain Old Java Object 약자인 POJO는 말에서도 볼 수 있듯 올드한 방식의 자바 라고 말할 수 있어

시대가 변했는데 무슨 올드한 자바냐! 라고 말을 할 수 있겠지만 이건 구형버전이라는 뜻은 아니야

또한 원래 있던 용어라기 보다는 프레임워크들의 무게가 3대 500치는 정도로 무거운 종속 객체를 만들다 보니

2000년대 부터 마틴파울러, 레베카 파슨, 조쉬 맥킨지등 많은 형들이 "무거운거 싫어!!!" 하면서 사용하게 된 용어야

 

정확하게 설명할 필요야 없겠지만 설명해보자면 마틴 파울러라는 형님이 2000년도에 레퍼런스를 준비하다가

 

마틴파울러: " 이걸 뭐라고 해야지? -_- .. 그래 그냥 오래된 방식의 자바라고 하자" 

 

이렇게 명칭하게 된거야 마틴 파울러 형님은 그 뒤 한마디 더 했지

 

마틴파울러: "간단한 객체는 폼나는 이름이 없어요. 그래서 그냥 적당한 이름 하나 만들어 붙였는데.. 다들 좋아하더라" 

 

그래서 지금까지 POJO라고 불리게 되었지

 

 

 

| 이걸 어디서 써?

여기서 합리적 의심이 추가 +1 정도 들어가야겠지?과연 그 오래된 개발 타입을 어디에 쓸거냐 이말이야.. 오래되어서 구동이나 될까? 하고 말이지

하지만 POJO는 우리가 이미 다 써봤을거라 생각해. 그것은 바로 Spring에서 말이야.

진정으로 나는 Spring을 했어도 쓴적이 없다! 싶다면 그건 바로 Spring 자체에 기능 구현을POJO로 되어있기 때문이지

그럼 오래된 기술말고 신기술들의 개념을 조금 짚어보고 넘어가보자면 Java로 신나게 프로그램을 짰다고 가정하자

그런데 이 기술이 결재대행을 도와주는 주문 결제 시스템이라고 가정할게, 그런데 이 시스템을 사용하기 위해서는

타 프레임워크에서 제공되는 기술이나 기능을 함께 써야한다면 이걸 의존성이 발생한다고 말할 수 있지 

즉 의존성이 발생된 시점부터 " 이건 POJO가 아니야!" 라고 말 할 수 있어.

 

순수하게 자바만으로 자바를 통해 자바만 사용하는 그런 의존성없고 깨끗한 기술을 말해.

Spring은 POJO를 선택하여  특히 EJB 기술들을 대부분 구현해 지원을 하기 때문에 대표

적인 POJO특징을 지니고 있어

 

Spring은 그걸 원했기 때문이야

 

EJB는 참 좋은 친구지만 그 혜택을 지원 받기 위해서 비용을 들여 WAS를 구매해야했고 *IDE 없이는 진입장벽이 높았고 설정도 복잡하고 개발자들은 흰머리와 두통에 시달려야했어 그만큼 시간도 많이 낭비 했지. 또한 객체지향을 EJB 스펙으로 인해 포기해야만 했다는 점이 아주 큰 이유였어. 생산성도 좋지않고 느리고, 복잡하고 진입장벽도 높았던지라 마틴 파울러라는 형이 "야 이건아니지 POJO로 갑니다." 라며 만들고 우린 그덕에 편안하게 사용하고 있지.

 

*IDE(Integrated Development Environment, 코딩이나 테스트, 디버그, 컴파일, 배포 등 개발 관련 작업을 한번에 할 수 있는 환경을제공하는 소프트웨어. 요즘은 web으로도 지원을 하는 IDE도 존재해)

 

 

 

| POJO를 성립하는 조건과 장점

POJO를 성립하기 위해서는 앞서 말했던 스토리를 보면 알 수 있듯이 무엇인가와 얽메이지 않아야해

클래스는 그 클래스의 고유성을 유지하며 단일 책임이 원칙이 되어야해 또한 환경과 규약에 종속되거나 의존성이 발생 되면 안된다는 것이지. 이것으로 인해서 Java의 원래 목적인 객체지향을 지키겠다!

이게 POJO의 독고다이 정신이야.

 

이로인해 확실히 알 수 있는걸 꼽아보자

1. 매우 지극히 객체 지향적이다

2. 종속이 되어있지 않다보니 테스트하기 좋고 구현하기 좋다

3. 각 로직들이 분리가 되어있어 코드가 깔끔하니 맘이 편안하다

 

 

 

| POJO를 대표하는 프레임워크?

앞서 말한 Spring이 있기도 하지만 유명한 하이버네이트가 있어!

Hibernate
Spring

하이버네이트는 ORM으로 유명해 이 친구는 자바를 위해서 나왔다고 봐도 무방한데

객체와 관계를 매핑해주는 솔루션같은 녀석이라고 볼 수 있고 JPA의 기술 스펙의 기준으로

기능을 구현하여 공급해 주는 역할을 하고 있어. 우리가 로직을 재사용 하거나, 설정된 DB 관련 정보가 변경이 된다거나, 받아온 데이터 값을 자바 객체로 매핑하여 사용 할 수 있도록해서 도움을 주는 그런 프레임 워크이지

 

반응형