[JSP/Servlet 개념정리] POJO를 사용하는 이유가 뭘까

2021. 7. 20. 00:46Document

POJO에 대한 의문

JSP/Servlet을 통한 CRUD기능 구현을 하던 중에 POJO라는 개념을 접하게 됐다. 해당 개념을 접하고 처음 든 생각이 그저 코드를 깔끔하게 하기 위해서 사용하는 건가?라는 의문이 생겼다.

일반적으로 서블릿을 사용할 때 어노테이션을 통해 이용한다.

 

기본적인 MVC2모델에서 CRUD를 기능 구현을 위해서 컨트롤러로 진입하기 위해 어노테이션을 사용했다. 근데 밑에 코드를 보면 Controller라는 인터페이스를 생성하여 이를 다른 컨트롤러 클래스에 구현하는 방식을 사용하고 있다. 이와 같은 방식을 POJO라는 개념을 이용한 것이라고 한다. 이는 일반적으로 MVC2모델에서 사용하는 방식과는 좀 다른 양식을 보이고 있다.

 

POJO의 기원

POJO에 대해서 좀 알아보자면, POJO는 'Plain Old Java Object'의 약자로 오래된 방식의 간단한 오브젝트라고 해석된다. POJO는 2009년에 마틴 바울러, 레베카 파슨스, 조시 맥켄지라는 프로그래머에 의해 만들어 졌다고 하는데 창시자들의 말에 의하면("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가 기원 됐다고 한다. 

POJO는 자바 시스템에서 제공하는 일반적인 오브젝트가 아닌 것을 POJO라고 이해가 된다. 위에서 두번째와 세번째이미지에서의 프로그래밍 방식은 일반적인 MVC2에서 서블릿 클래스가 HttpServlet이라는 자바에서 제공해주는 오브젝트를 사용한 것이 아니라, 마치 서블릿 클래스인거 마냥 request와 response를 인자로 받는 Controller라는 인터페이스를 생성하고 이를 컨트롤러 클래스에다 구현하는 방식을 사용한다.  이렇게 사용하는 이유가 무엇일까

 

POJO를 지향해야 할 이유

스프링 프레임워크 이전에는 원하는 엔터프라이즈 기술이 있다면 그 기술을 직접적으로 사용하는 객체를 설계했습니다. 그리고 이러한 개발 방식이 만연하고 있었습니다. 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수에 어려움이 생겼습니다. 또한, 특정 기술의 클래스를 상속받거나, 직접 의존하게 되어 확장성이 매우 떨어지는 단점이 있었습니다. 이 말은 객체지향의 화신인 자바가 객체지향 설계의 장점들을 잃어버리게 된 것입니다.(출처: https://siyoon210.tistory.com/120)

 

정리해보자면 자바라는 언어는 객체지향을 위한 언어인데 특정 기술의 오브젝트 사용의 만연함으로 인해 객체지향 설계의 장점들을 잃고 있기 때문에 본래 자바의 객체지향적인 장점을 살리기 위해 POJO를 지향해야 된다라고 정리할 수 있겠다. 또한 POJO를 사용하게 되면 코드가 간결해지기 때문에 유지보수시에도 큰 장점된다고 생각한다.

 

이제 스프링프레임워크 사용시 해당 개념을 잘 접목시켜서 객체지향을 잘 구현 해내는게 앞으로의 과제이다.. 화이링