[Spring] POJO (Plain Old Java Object)

zini9188·2023년 2월 6일
0

Spring

목록 보기
3/33
post-thumbnail

POJO란?


Plain Old Java Object의 약자로 특정 기술에 종속되지 않는 순수한 자바 객체를 의미한다.

POJO의 조건


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

public class User {
  private String userName;
  private String id;
  private String password;

  public User(String userName, String id, String password){
  	this.userName = userName;
    this.id = id;
    this.password = password;
  }
  
  public String getUserName() {
    return userName;
  }  

  public String getId() {
  	return id;
  }
  
  public String getPassword() {
  	return password;
  }
}
// POJO가 아닌 경우
public class A extends B{ ... }
public class A implments B { ... }

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

웹 환경에 종속되는 HttpServletRequest나 HttpSession와 관련된 API를 직접 이용해서는 안된다.

3. 단일 책임 원칙을 지키는 클래스

책임과 역할이 다른 코드를 하나의 클래스에 넣는 경우 객체지향 원칙에서 멀어지기에 진정한
POJO라고 할 수 없다. 결국 POJO에는 객체지향의 원리가 담겨 있어야 한다.

POJO를 통해 얻을 수 있는 것


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

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

  • 코드가 깔끔해져 상대적으로 디버깅하기 쉽다.

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

  • 객체지향적인 설계를 제한없이 적용할 수 있다.

스프링 삼각형


스프링의 핵심 기술인 IoC/DI, AOP, PSA를 이용하여 POJO를 지향할 수 있다.

@Annotation을 사용중인 클래스는 POJO인가?

POJO의 정의로만 보면 사실 아닌게 맞다고 한다.
하지만 특정 프레임워크에 종속적인 Annotation을 제거했을 때 POJO가 된다면 POJO로 간주할 수 있다고 한다.

profile
백엔드를 지망하는 개발자

0개의 댓글