POJO
프로젝트가 커지고 필요한 기술들이 늘어나며 특정 기술과 환경에 종속되는 경우가 자주 발생하여
작성된 코드의 유지/보수가 어렵고, Java에서의 상속(extends)의 특성상 이미 특정 클래스를 상속하게 되어
정작 다른 상위 클래스를 상속해서 기능을 확장하기 어려운 경우도 많이 생겼습니다.
결국 좋은 객체지향 설계를 할 수 있는 Java 언어를 사용하면서도
객체지향 설계 본질을 잃어버리는 문제점들을 해결하고자 POJO라는 개념이 등장하게 됨
POJO라는 것을 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미
POJO(Plain Old Java Object)란?
POJO는 Plain Old Java Object라는 단어의 첫 글자를 따서 만든 약자
PO는 Java로 생성하는 순수한 객체를 의미
JO는 객체지향 프로그래밍을 의미
POJO는 주로 데이터 전달 객체(Data Transfer Object, DTO)로 사용됩니다.
DTO는 데이터를 저장하고 전달하기 위한 목적으로 사용되는 객체입니다.
POJO는 데이터를 캡슐화하고 필요한 기능을 제공하는 단순한 형태의 클래스로서,
비즈니스 로직을 포함하지 않는 경우가 많습니다.
POJO 프로그래밍이란?
- Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 함
- 특정 환경에 종속적이지 않아야 함
( Tomcat이 지원하는 API를 직접 가져다가 사용 → Zetty로 바꾸라고 하면 전면 수정 해야함)
POJO프로그래밍이 필요한 이유
- 특정 환경이나 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다.
- 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로써 코드가 깔끔해진다.
- 코드가 깔끔해지기 때문에 디버깅하기도 상대적으로 쉽다.
- 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 단순해진다.
- 객체지향적인 설계를 제한 없이 적용할 수 있다.(가장 중요한 이유)
POJO 클래스 특징
- 기본 생성자: POJO 클래스는 기본 생성자를 가져야 합니다. 이는 매개변수가 없는 public 생성자를 의미합니다. 2.Getter와 Setter 메서드: POJO 클래스는 필드에 대한 Getter와 Setter 메서드를 제공해야 합니다. 이를 통해 필드에 접근하고 값을 설정할 수 있습니다. 3.직렬화 가능: POJO 클래스는 직렬화(serialization)가 가능해야 합니다. 직렬화는 객체를 바이트 스트림으로 변환하거나 반대로 바이트 스트림을 객체로 변환하는 과정입니다.
POJO 프로그래밍의 장점
- 간결성: POJO 클래스는 단순하고 간결한 구조를 가지므로 코드의 가독성이 높아집니다.
- 유연성: POJO 클래스는 특정한 인터페이스나 클래스에 종속되지 않으므로 다양한 환경에서 사용할 수 있습니다.
- 테스트 용이성: POJO 클래스는 의존성이 적기 때문에 단위 테스트와 같은 작업을 수행하기에 용이합니다.
POJO와 Spring의 관계
• Spring Framework은 POJO 프로그래밍을 지향하기 위해 IoC/DI, AOP, PSA라는 기술을 제공합니다.
This post is licensed under CC BY 4.0 by the author.