티스토리 뷰

POJO

 

POJO(Plain Old Java Object)란 평범한 자바 객체라는 의미이다.

이게 무슨 뜻이냐면, 어떤 자바 객체가 있는데, 이 객체를 사용하기 위해서 상속을 받아야 한다거나, 인터페이스를 구현해야 한다거나, 어노테이션을 적용해야 한다거나 하는 제약조건이 없는 객체라는 뜻이다.


한마디로 정의하면 POJO란 프레임워크를 사용하기 위해서 해야만 하는 어떤 제약이 없는 평범한 자바 객체이다.


-- 쉽게 따라하는 자바 웹 개발 중 --

 

POJO라는 용어는 평범한 자바 객체라는 뜻인데 어떤 객체를 평범하다고 지칭하는지

그리고 POJO를 사용해서 개발하는게 왜 중요한지 설명 한다. 

 

먼저 평범하다고 말하는 객체는 다음과 같은 특징. 

 

  • 클래스 상속을 강제하지 않는다. 
  • 인터페이스 구현을 강제하지 않는다. 
  • 애노테이션 사용을 강제하지 않는다.
    •  

      POJO가 아닌 대표적인 객체

      public HelloServlet extends HttpServlet{ ... } 

       

      자바 서블릿 코드를 작성할 때는 이렇게 반드시 HttpServlet을 상속바아야 한다. 

      서블릿 프로그래밍을 한다는 이유로 객체지향 프로그래밍의 핵심적인 기능 중 하나인 상속을 빼앗긴 것이나 마찬가지이다. 

      -> 자바는 다중 상속을 지원하지 않기 때문에, 하나의 클래스를 상속받으면 다른 것은 상속받을수 없다.


      코드를 작성하고 있는 개발자가 직접 상속을 사용할 수 있는 기회가 없어졌으니.. 

      그리고 extends HttpServlet이 추가되면서 이 코드를 이해하기 어려워 진다. 

      HttpServlet에서 어떤 기능을 제공하는지 어떤 코드를 어떻게 재사용해야 할지 판단하기도 어렵다. 

       

      POJO는 그러한 제약이 없는 일반적인 객체를 말한다. 

      상속이나 인터페이스 구현을 사용하지 않은 객체를 말하는 것이 아니라, 그런 것을 라이브러리나 프레임워크로부터 강제받지 않는 객체라는 것이다. 

       

      public HelloController { .... } 

      이런 클래스라면 개발자의 선택에 따라 자신이 만든 다른 Controller클래스를 상속받게 하거나 인터페이스를 구현하게 할 수 있다. 또한 이해하기 쉬운 코드이기도 하다. 무엇보다도 이런 객체가 테스트를 작성하기 편하다. 테스트를 작성하기 쉬운 코드가 곧 좋은 코드이다. 

       

      POJO는 자바 표준 스펙이 아니다. 



      DTO

       


      스프링에서는 3가지 독립적인 계층이 존재한다. 뷰계층, 컨트롤러계층, 비즈니스계층 이렇게 3가지로 나누어져 있다.
      각 계층에서 사용되는 값을 공유하기 위해서 Data Transfer Object라는 DTO객체를 사용한다.

      이 객체는 관계형 데이터베이스의 필드값과 동일한 변수들을 private 멤버로 가지고 있고 이멤버에 접근할수 있는 
      getter와 setter로 이루어져 있다.

      DTO를 사용 하는 이유

      만약에 클라이언트가 어떤 값을 요청했는데 그 요청한 값을 DTO에 담지 않고 일일이 하나씩 응답해준다고 해보자. 이렇게 되면 네트워크에 엄청나게 많은 트래픽이 발생할것이다. 

      VO

       


      DTO와 VO는 거의 유사한 개념인데, 계층간 데이터 공유를 위한 자바 빈즈라는점에서 유사하다.

      VO의 두 객체가 같다고 판단하기 위해서는 그 객체가 같은 클래스로 부터 나왔다 하더라도 그 내부의 값이 다르면 두 객체는 같다고 판단되지 않는다.(아래에 예가 있음)

      하지만 DTO는 내부의 값이 다르더라도 같은 클래스로 부터 나온 객체라면 두 객체가 서로 같다고 판단 된다.



      DAO

       


      실제 객체는 멤버 변수와 멤버 메소드로 구성 되어 있다. 이것은, 하나의 객체가 데이터의 저장과 그 데이터 사용을 동시에 한다는것인데, 웹개발에서는 데이터 저장용도의 객체와 데이터 사용 용도의 객체가 따로 분리되어 있다. 각각 DTO,DAO라고 불린다.












      개인적으로 공부하면서 적은 내용이기 때문에 오류가 있을 수 있습니다.
      잘못된 내용을 발견하시면 댓글로 달아주시면 감사하겠습니다. 




      '컴퓨터 공학과 졸업 > 기본 개념' 카테고리의 다른 글

      DBCP  (0) 2018.02.14
      JNDI  (0) 2018.02.14
      GET방식과 POST방식  (1) 2018.01.26
      자바 빈즈란?  (0) 2018.01.21
      서블릿,서블릿컨테이너,톰캣,인터셉터,필터  (0) 2017.08.11
      댓글
      최근에 올라온 글
      최근에 달린 댓글
      Total
      Today
      Yesterday
      링크
      «   2024/05   »
      1 2 3 4
      5 6 7 8 9 10 11
      12 13 14 15 16 17 18
      19 20 21 22 23 24 25
      26 27 28 29 30 31
      글 보관함