규턴의 개발블로그

 

 

POJO는 Plain Old Java Object입니다.

직역한다면 오래된 방식의 간단한 자바 오브젝트입니다. POJO가 생겨난 이유는 개발자들이 개발하면서 무거운 프레임워크 등을 끌어오면서 점점 무거운 객체로 만들어지는데, 이렇게 되면서 다른기술들에 점점 의존하게 되어 유지보수에 어려움을 겪었습니다.

이것을 극복하고자 POJO라는 개념이 나왔습니다.

 

POJO는 어떤것인가?

POJO의 개념은 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object입니다. 

쉽게 생각이 안 떠오를 수도 있기에 아래와 같은 예시를 가져왔습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Member {
 
 
    private String id;
 
    private String password;
 
  
    public String getId(){
        return id;
    }
 
    public String getPassword(){
        return password;
    }
 
    public void setId(String id){
        this.id=id;
    }
 
    public void setPassword(String password){
        this.password=password;
    }
    
 
}
cs

 

보시면 Java에서 가장 기본적인 형태입니다.

 

즉 Getter, Setter로만 구성된 가장 순수한 형태의 클래스를 POJO라고 합니다.

 

POJO의 특징

 

장점

  • 코드가 간결해집니다.
  • 진정한 객체지향 설계를 할 수 있습니다.
  • 테스트가 독립적으로 가능합니다.

조건

  • 특정 규약에 종속되지 않아야합니다.(꼭 필요한 API외에는 종속되지 않습니다.)
  • 특정 환경에 종속되지 않아야합니다.

위와 같은 조건을 지킨다면 다른 환경에서의 이전이 수월해집니다. 

또한 외부 API를 사용하기 않기에 웹서버에 올리지 않고 독립적인 테스트가 가능해집니다.

 

 

 

Spring에서의 POJO

저는 Spring을 공부하면서 Spring이 POJO를 잘 준수하는 프레임워크라고 들었습니다. 하지만 Spring을 공부해보시면 아시겠지만 ORM기술을 사용하려면 Hibernate 프레임워크를 의존하게 됩니다. 이건 POJO를 지키지 못하는 거 아닌가?라는 생각이 들었습니다. 

Hibernate는 외부 프레임워크이기 때문에 외부 기술에 의존하는 것입니다. 

POJO를 준수하는 Spring에서는 ORM이라는 기술을 사용하기 위해 JPA라는 표준 인터페이스를 정하였습니다. 

표준 인터페이스로 지정하였기에 POJO를 준수했다고 할 수 있습니다. 

이러한 방법을 PSA라고 합니다(Portable Service Abstraction) 



토비의 스프링에서는 POJO를 다음과 같이 정의하였습니다.

 

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

 

저도 아직 이 말에 대해 정확히 이해하지 못하였지만 이후 Spring을 공부할 때 POJO라는것을 인지하면서 개발하게 될 것 같네요 ㅎㅎ

 

 

 

 

profile

규턴의 개발블로그

@규턴이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!