본문 바로가기

CS지식/Spring

[CS지식 - Spring] POJO(Plain Old Java Object)

1.POJO(Plain Old Java Object)

  • JavaEE등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크데 종속된 '무거운'객체를 만들게 된것에 반발해서 사용되게 된 용어(위키백과)
  • 등장배경 : 특정 '기술'과 환경에 종속되어 의존하게 된 자바코드는 가독성↓ , 유지보수↓, 확장성↓
                       이로인해 객체지향 언어인 자바가 객체지향의 장점들을 잃어버리게되어 POJO개념이 등장
    ▶특정 기술에 종속되지 않는 순서한 자바 객체 
        특정 프레임워크를 의존하게 되다면 POJO라고 할 수 없음
  • 예시1)
public class UserDTO {
	
	private String userName;
	private String userId;
	private String userPassword;
	
	public String getUserName() {
		return userName;
	}
	
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
	public String getUserId() {
		return userId;
	}
	
	public void setUserId(String userId) {
		this.userId = userId;
	}
	
	public String getUserPassword() {
		return userPassword;
	}
	
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}

	
}
  • 위 객체는 기본적인 자바 기능인 Getter, Setter로 구성된 순수한 형태의 기본 클래스
     (EJB 등에서 사용되는 JavaBean이 아닌)   
    **EJB(Enterprise JavaBeans) : 자바 개발에 있어 로우 개발에 신경x 어플리케이션을 쉽게 만들어준 기술
                                                       객체 지향성을 감소시킴
    ▶ 특정 기술에 종속되어 있지 않은 순수 자바 객체임
    ▶ POJO라고 할 수 있음
  • 예시2)
public class WinExam extends WindowAdapter {

	@Override
	public void windowClosing(WindowEvent e) {
		System.exit(0);
	}
}
  • 위 객체는 Window의 기능을 사용하기 위해 WindowAdapter클래스를 상속받음
    ▶ 다른 솔루션을 사용하고자 할때 많은 코드를 리팩토링해야하는 문제 발생
    ▶ POJO라고 할 수 없음

2. POJO를 유지하면서 특정 기술을 사용 할 경우

2-1. Hibernate(하이버네이트)

  • 스프링 개발에서 많이 사용하고 있는 기술
  • 특정기술에 종속적이면  POJO가 아닌데 스프링에서는 가능한 이유
    ▶ 스프링에서 정한 표준 인터페이스가 있기 때문에
  • 스프링 개발자들은 ORM(Object Relationship Mapping)이라는 기술을 사용하기 위해
    'JPA'라는 표준 인터페이스를 정해둠
    여러 ORM프레임워크들은 JPA라는 표준 인터페이스 아래 구현되어 실행됨
    ▶ 스프링이 새로운 Enterprise 기술을 도입하면서도 POJO를 유지하는 방법 ( = 스프링의 PSA)

 

 

 

더보기