자율 학습/학습
[Spring] POJO란?
60cod
2022. 12. 30. 13:49
POJO (Plain Old Java Object)
객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트
POJO의 조건
- 특정 규약에 종속되지 않는다.
- POJO는 자바 언어와 꼭 필요한 API 외에는 종속되지 않아야 한다.
- 특정 규약을 따라 만들게 하는 경우는 대부분 규약에서 제시하는 특정 클래스를 상속하도록 요구한다. 그럴 경우 자바의 단일 상속 제한 때문에 더 이상 해당 클래스에 객체지향적인 설계 기법을 적용하기가 어려워지는 문제가 생긴다. 또한 규약이 적용된 환경에 종속적이 되기 때문에 다른 환경으로 이전이 힘들다는 문제점이 있다.
- 별다른 가치를 주지도 못하는 규약 따위에 종속되지 않아야 하고, 객체지향 설계의 자유로운 적용이 가능한 오브젝트여야만 POJO라고 불릴 수 있다.
- 특정 환경에 종속되지 않는다.
- 순수한 애플리케이션 로직을 담고 있는 오브젝트 코드가 특정 환경에 종속되게 만드는 경우라면 POJO라고 할 수 없다.
- 특히 비즈니스 로직을 담고 있는 POJO 클래스는 웹이라는 환경정보나 웹 기술을 담고 있는 클래스나 인터페이스를 사용해서는 안 된다.
- 단지 자바의 문법을 지키고, 순수하게 JavaSE API만을 사용했다고 해서 그 코드를 POJO라고 할 수 없다. POJO는 객체지향적인 자바 언어의 기본에 충실하게 만들어져야 하기 때문이다.
POJO의 장점
- 기술과 환경에 종속되지 않아 코드가 깔끔하다.
- 자동화된 테스트에 유리하다. (환경의 제약은 자동화된 테스트를 어렵게 한다.)
- 객체지향적인 설계를 자유롭게 적용할 수 있다.
출처
토비의 스프링3