POJO

Ouroboros·2023년 8월 14일
0

개발상식

목록 보기
2/17

1) POJO 프로그래밍이란?

- 등장 배경

특정 기술과 환경에 종속된 자바 코드는 가독성이 떨어져서 유지보수가 어렵고, 확장성이 떨어지는, 객체지향성의 방향을 잃는 문제가 발생

- POJO의 정의

POJO : Plain Old Java Object
순수 오래된 자바 객체만 이용하여 프로그래밍 코드를 작성하는 것

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

- POJO의 조건

1) 특정 기술(규약)에 종속 되지 않아야 한다.

  꼭 필요한 ⑴API 외에 사용하지 않는다.
  특정 Library, Module에서 정의된 클래스를 상속받아 구현하지 않는다.

<POJO 방식이 아닌 예>

public class ExampleListener implements MessageListener {

  public void onMessage(Message message) {
    if (message instanceof TextMessage) {
      try {
        System.out.println(((TextMessage) message).getText());
      }
      catch (JMSException ex) {
        throw new RuntimeException(ex);
      }
    }
    else {
      throw new IllegalArgumentException("Message must be of type TextMessage");
    }
  }

}

▷ JMS(Java Message Service) API 를 사용하기 위해서 MessageListner
 인터페이스를 상속받아야 한다.
 이렇게 구현하면 JMS 환경에 종속된다.
 만약 Listener가 많아지게 되고 다른 솔루션으로 교체할 경우 큰 변경 비용이
 발생한다.

<POJO 방식>

@Component
public class ExampleListener {

  @JmsListener(destination = "myDestination")
  public void processOrder(String message) {
    System.out.println(message);
  }
}

▷ 'JMS'에서 'RabbitMQ'로 메시징 솔루션을 변경한다고 했을때,
  개발자는 '@JmsListener' 어노테이션을 '@RabbitListener' 어노테이션으로 교체
  하기만 하면 된다.

2) 특정 환경에 종속되지 않아야 한다.

 예를 들어, 웹기술의 클래스나 인터페이스를 상속받거나 구현하면 해당 객체는  웹화면에서만 사용이 가능하다.

<POJO 방식이 아닌 예>

public class NotPojo extends HttpServlet{

	@Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
    
    }
	
}

▷ 사용환경이 웹 환경에 종속되는 HttpServletRequest나 HttpSession와 관련된   API를 직접 이용해서는 안된다.
  웹 이외의 클라이언트가 요청할 수 없어 호환성이 떨어질 수 있기 때문이다.

<POJO 방식>

public class PojoStyle{
    private Long length;
    private String name;
    
    public Long getLength(){
    	return length;
    }
    
    public String getName(){
    	return name;
    }
    
    public void setLength(int length){
    	this.length = length;
    }
    
    public void setName(String name){
    	this.name = name;
    }
}


2) POJO와 SPRING

⑵Spring은 POJO 프로그래밍을 지향하는 ⑶프레임워크이다.
최대한 다른 환경이나 기술에 종속적이지 않도록 하기 위한 POJO 프로그래밍 코드를 작성하기 위해 Spring 프레임워크에서는 IoC/DI, AOP, PSA를 지원하고 있다.

3) 주석

⑴ API : 프로그램을 개발하기 위해 기본적으로 제공하는 클래스와 인터페이스     위주의 코드들, JAVA API는 JDK 내에 존재
⑵ Spring : JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀
      JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다.
⑶ 프레임워크 : 자주 쓰일만한 기능들을 모아놓은 모임(집합)
        기본적인 설계나 필요한 라이브러리를 제공

4) 참고자료

https://onpups.pe.kr/386
http://asuraiv.blogspot.com/2017/07/spring-pojo.html
https://code-lab1.tistory.com/314
https://beststar-1.tistory.com/32



1개의 댓글

comment-user-thumbnail
2023년 8월 14일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기