ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 스프링의 특징 - POJO란 무엇인가
    Framework | Test/Spring 2021. 8. 16. 21:20

    POJO(Plain Old Java Object)

    위키백과: Plain Old Java Object - 위키백과, 우리 모두의 백과사전 (wikipedia.org)


    [POJO 프로그래밍]

    - 스프링의 핵심 개발자들은 "스프링의 목표는 엔터프라이즈 서비스 기능을 POJO에 제공하는 것"이라고 했다.

    - 엔터프라이즈 서비스: 보안, 트랜잭션과 같은 엔터프라이즈 시스템에서 요구되는 기술

    - 위의 두 문장을 재해석하면, 엔터프라이즈 서비스 기술과 POJO라는 애플리케이션 로직을 담은 코드를 분리했다는 뜻이기도 하다.

    -> "분리됐지만 반드시 필요한 엔터프라이즈 서비스 기술을 POJO 방식으로 개발된 애플리케이션 핵심 로직을 담은 코드에 제공한다"는 것이 스프링의 강력한 특징과 목표이다.

     

    [POJO 란 무엇인가]

    - POJO 는 Plain Old Java Object의 첫 글자를 따서 만든 약자이다.

    - 특정 기술에 종속되지 않고, class path를 필요로 하지 않는 일반적인 Java Object를 의미한다.

    - 마틴 파울러에 의해 개발되었는데, 그는 당시 인기를 끌던 EJB처럼 복잡하고 제한 많은 기술의 사용보다 자바의 단순한 오브젝트를 이용해 애플리케이션 비즈니스 로직을 구현하는 편이 나을 것이라 생각했다. 그럼에도 자바 개발자들이 자바의 단순한 오브젝트 사용을 꺼리는지 궁굼해 했고, 그 이유는 EJB와 같이 그럴듯한 이름이 없기 때문이라는 것을 알았다.

    - POJO라는 이름 때문만은 아니겠지만, 그 이후 개발자들의 POJO 프로그래밍에 대한 관심이 높아졌고 POJO를 지원한다는 장점을 내새워 많은 프레임워크 기술이 나오기 시작했다.

     

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

     

    [POJO 의 조건]

    *POJO란 단순히 그냥 평범한 자바오브젝트라고 할 수 있지만 명확하게 하자면 적어도 아래 세 가지 조건을 충족해야한다.

     

    1)특정 규약에 종속되지 않는다

    - POJO는 자바 언어와 꼭 필요한 API 외에는 종속되지 않아야한다.

     

    2)특정 환경에 종속되지 않는다

    - 특정 환경에 종속적이어야만 동작하는 오브젝트도 POJO라고 할 수 없다.

     

    3)객체지향적 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.

     

    [POJO 의 장점]

    *POJO 프로그래밍의 장점: POJO가 될 수 있는 조건이 바로 POJO의 장점이 된다.

    1)특정 기술과 환경에 종속되지 않는 오브젝트는 클린 코드가 될 수 있다.

    2)POJO로 개발된 코드는 자동화된 테스트에 매우 유리하다.

    3)객체지향적 설계를 자유롭게 적용할 수 있다.

     

    [POJO 프레임워크]

    *스프링은 POJO를 이용한 엔터프라이즈 애플리케이션 개발을 목적으로 하는 프레임워크이다.

    -POJO 프로그래밍이 가능하도록 기술적 기반을 제공하는 프레임워크를 POJO 프레임워크라고 한다.

    -대표적인 POJO 프레임워크: 스프링 프레임워크, 하이버네이트

    1) 스프링 프레임워크: 엔터프라이즈 애플리케이션 개발의 모든 영역, 계층에서 POJO 방식 구현 가능하게 하려는 목적

    2) 하이버네이트: DB 이용 기술에 POJO 적용하는 것 목적으로 함

     

     


    ※해당 포스팅은 개발 공부를 하고 있는 학생에 의하여 작성되었으니 참고 바랍니다.

    정정 필요한 내용에 대한 댓글 환영합니다.

     

    댓글

Designed by Tistory.