Spring POJO

Ga0·2023년 4월 28일
0

SPRING

목록 보기
11/14
post-thumbnail

EJB란?

  • IT기술의 발전에 따라 점점 복잡한 기술이 요구되고, 자바의 기초적인 JDK만으로는 부족함이 있었다. 서버 기반의 자바 기술인 J2EE가 등장하였고, Servlet과 JSP 레벨의 최소한의 서버 프로드래밍 인터페이스로는 복잡합 애플리케이션을 제작하는 것은 쉽지X
  • 이를 보안하기 위해 나온것이 sun사의 EJB이다.
  • Enterprise Java Beans의 약자로 POJO와 다르게 특정 기술과 환경에 종속되어 사용되는 기술이다.
  • 하지만, 현실에서 EJB를 사용하는 것은 1% 미만의 애플리케이션을 사용하기 위해 나머지 99%도 무거운 기능을 사용해야 했고, EJB의 모든 기능을 사용하기 위해서는 다 필요하지도 않은 WAS(=DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server; Web Container or Servlet Container이라고도 부른다.)을 구입하기도 해야 했고, 고급 IDE 없이는 복잡한 설정을 해야 했다.

POJO란?

  • 위에서 설명한 EJB의 단점을 피하기 위해 객체 지향의 원리에 따라 만들어진 자바 언어의 기본에 충실히 비즈니스 로직을 구현하자는 말이 나오기 시작했고, 이를 통해 나온 것이 Planin Old Java Object로 단순한 자바 프로젝트이다.
  • Java EE등의 중량 프레임워크를 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것을 반발하여 사용된 용어이다.
  • 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 Object이다.

POJO의 특징/조건

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

  • 자바언어와 꼭 필요한 API 외에는 종속되지 말아야한다.
  • 특정 클래스를 계속해서 상속을 요구하면, 자바의 단일 상속 제한 때문에 더 이상 해당 클래스에 객체지향적 설계 기법을 적용하기 어려워진다.

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

  • 특정 기업의 프레임워크나 서버에서만 동작이 가능한 코드라면 POJO라고 할 수 없다. (즉, POJO 환경에 독립적이어야 한다!!)
  • 다시 말해, 당장 웹에서 사용하는 서비스를 만든다고 해도 웹이라는 환경으로 제한해버리는 Object나 API에 의존해서는 안된다.
  • 기술적인 내용을 담고 있는 비즈니스 로직에 웹 정보와 관련된 HTTPServletRequest나 HttpSession 등과 같은 API를 사용한다면 POJO 라 할 수 없다.

3. 객체 지향적 원리에 충실해야한다.

  • 객체지향적인 자바 언어의 기본에 충실하게 만들어져야 한다
  • 주의 해야할 점은 책임과 역할별로 잘 분류하여 클래스를 생성해야한다.
    -> 상속대신 다른 로직(ex. for, switch/if 등등)으로 가득가득 채워 해결하는 것도 좋지 않은 방법이다. (POJO라 할 수 없음)

POJO의 장점

  • 특정 규약에 종속되지 않아 객체 지향 설계를 할 수 있게 된다.
  • 특정 환경에 종속되지 않아 테스트하기에 좋다
  • 특정 규약에 종속되지 않아 로우레벨 코드(컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어)와 비즈니스 코드가 분리되어 깔끔한 코드를 작성할 수 있게 한다.

POJO 코드 예시

package ezenweb.web.domain.todo;

public class TodoDto {

    //할일 pk 번호
    private int id;

    //할일 내용
    private String title;

    //할일 여부
    private boolean done;
    
   public int getId() {
   		return name;
  }
  
  public String getTitle() {
   		return value;
  }
  public boolean getDone() {
   		return value;
  }
  
  public void setId(int id) {
    this.id = id;
  }
  
  public void setTitle(String title) {
    this.title = title;
  }
  
  public void setDone(boolean done) {
    this.done = done;
  }

}
  • 이렇게 기본인 GETTER/SETTER으로만 구성된 코드를 POJO라고 한다.

0개의 댓글