[Spring] POJO

최우형·2023년 3월 31일

Spring

목록 보기
3/9

📌POJO(Plain Old Java Object)

JO는 객체와 객체가 관계를 맺을 수 밖에 없는 객체지향 프로그래밍이다.

PO는 Java로 생성하는 순수한 객체를 의미한다.


이 말의 의미는 손님이 점원에게 요거트 안에 시럽이든 과일이든 시리얼이든 아무 것도 넣지 말고 그냥 요거트 자체만 주문하는 것

POJO 프로그래밍이란?

  • Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야한다.
public class User {
  private String userName;
  private String id;
  private String password;

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
  	this.userName = userName;
  }

  public String getId() {
  	return id;
  }

  public void setId(String id) {
  	this.id = id;
  }

  public String getPassword() {
  	return password;
  }

  public void setPassword(String password) {
  	this.password = password;
  }
}

getter와 setter만 가지고있는 순수한 객체이기 때문에 POJO라 부를 수 있다.

public class MessageForm extends ActionForm{ // (1)
	
	String message;

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
}

public class MessageAction extends Action{ // (2)
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
        throws Exception {
		
		MessageForm messageForm = (MessageForm) form;
		messageForm .setMessage("Hello World");
		
		return mapping.findForward("success");
	}
	
}

(1)과 (2) 모두 클래스를 상속받고있기때문에 나중에 애플리케이션이 요구사항이 변경돼서 다른 기술로 변경하려면 status의 클래스를 명시적으로 사용했던 부분을 전부 다 일일이 제거하거나 수정해야한다.

또한, Java는 다중 상속을 지원하지 않기 때문에 'extends' 키워드를 사용해서 한 번 상속을 하게되면 상위 클래스의 상속받아서 하위 클래스를 확장하는 객체지향 설계 기법을 적용하기 어려워진다.


  • 특정 환경에서 종속적이지 않아야 한다.

시스템의 요구 사항이 변경돼서 Tomcat 말고 제트라는 다른 Servlet Container를 사용하게 된다면 Tomcat API코드를 모두 걷어내고 Zetty로 수정하든가 최악의 경우에는 애플리케이션을 전부 뜯어고쳐야 될지도 모른다.


📌POJO 프로그래밍이 필요한 이유

  • 특정 환경이나 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다.

  • 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거 함으로써 코드가 깔끔해진다.

  • 코드가 깔끔해지기 때문에 디버깅하기도 상대적으로 쉽다.

  • 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 단순해진다.

  • 객체지향적인 설계를 제한없이 적용할 수 있다.(가장 중요한 이유)

POJO와 Spring의 관계

Spring은 POJO 프로그래밍을 지향하는 Framework이다.

POJO 프로그래밍을 위해 Spring에서는 세가지 기술을 지원하고 있는데 그 것이 사진에서 POJO를 감싸고 있는 IoC/DI, AOP, PSA이다.

⭐핵심 포인트

  • POJO란 순수한 Java 객체를 의미한다.

  • POJO 프로그래밍이란 순수 Java 객체가 다른 기술이나 환경에 종속되지 않도록 하기 위한 프로그래밍 기법이다.

  • POJO 프로그래밍을 효과적으로 적용하기 위해서는 특정 기술에 대한 지식보다는 JDK의 API에 대한 지식과 객체지향적인 사고방식과 설계를 위한 훈련이 우선시 되어야한다.

  • Spring Framework는 POJO 프로그래밍을 지향하기 위해 IoC/DI, AOP, PSA 라는 기술을 제공한다.

  • POJO 프로그래밍을 효과적으로 적용하기 위해서는 특정 기술에 대한 지식보다는 JDK의 API에 대한 지식과 객체지향적인 사고방식과 설계를 위한 훈련이 우선시 되어야 한다.

profile
프로젝트, 오류, CS 공부, 코테 등을 꾸준히 기록하는 저만의 기술 블로그입니다!

0개의 댓글