Plain old Java object 란?


안녕하세요.
고코더 입니다.


오늘인 POJO라는 개념을 알아봅니다. 개인적으로 몰라도 될거 같은 개념이지만 면접자들은 이걸 질문하기 좋아하므로 알아봅니다. 이 개념은 철학에 가깝습니다. 물런 구체화 하면 특정 방식의 소스가 POJO가 됩니다.



 1. POJO란 한줄로 표현하면?


"프레임워크에 종속된 무거운 객체를 만들게 된 것에 반발해서 사용되게 된 용어"


 2. 탄생 배경




마틴 파울러는 자바의 단순한 오브젝트를 이용하여 로직을 구현하는게 나은데 왜 EJB처럼 복잡하고 제한 많은 기술을 이용할까? 라는 의문이 들었습니다. 마틴은 그저 그럴싸한 이름이 없는게 원인 일까 싶어  POJO를 만들었습니다. 평범한 자바오브젝트에 멋진 이름을 붙여줬던 시도는 기대 이상으로 성공적이었다고 합니다.

우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고. -마틴 파울러 -



 3. POJO의 정의


POJO는 Java 언어 규약에 의해 강제된 것 이외의 제한에 구속되지 않는 Java 오브젝트 이어야 합니다.

1.  지정된 클래스를 extends 하면 안된다.

2. 정의된 인터페이스를 implement 하면 안된다.

3. 정의된 Annotation을 포함하지 않는다



 4. POJO 기반 코드란?


1. 객체지형적으로 설계 되었는가?

재활용 가능하고 반복적인 템플릿이 없는 특징이 있습니다. 객체지향적으로 자바를 개발되어 있는지 확인해야 합니다

2. 테스트가 용이한가?

POJO 철학을 이용해 만들어진 어플리케이션은 자동화된 테스트 코드 작성이 편리해야 합니다. 자동화된 테스트 코드를 개발 해야합니다.


마무리


사실 외우긴 했는데 쓰면서도 잘 모르겠네요.


댓글을 달아 주세요