POJO(Plain Old Java Object)
2024. 5. 25. 19:40
POJO : 평범한 오래된 자바 객체
- 자바 언어 스펙을 제외한, 특정 기술(프레임워크)에 대한 종속성이 없는 객체.
- 즉, 어떤 자바 프로젝트에서도 사용 가능한 객체.
- Java 언어 자체 규약에 의한 제한 외의 규약에 구속받지 않는 Java 객체.
- 제약사항
- 미리 지정된 클래스를 extend 해서는 안된다. 즉, 어떤 클래스의 자식클래스가 될 수 없다.
- 미리 지정된 인터페이스를 implement 해서는 안된다.
- 미리 정의된 어노테이션을 포함해서는 안된다.
- 장점
- 비즈니스 로직과 특정 환경 종속적인 코드를 분리하기 때문에 코드가 단순해진다.
- 특정 환경에 종속적인 로직이 포함된 객체는 테스트가 어렵지만, POJO는 그렇지 않다. 즉, 테스트 자동화에 유리하다.
- 객체지향적인 설계를 자유롭게 적용할 수 있다.
POJO vs Java Bean
- POJO는 그 자체로 사용할 수 있는 객체를 의미
- Java Bean은 좀 더 많은 제약 사항이 추가된다.
- 기본 생성자가 존재해야 한다.
- 필드의 접근 제어자가 private 이어야 하며, 필드는 getter, setter로만 접근해야 한다.
- 직렬화 가능해야한다. 즉, Serializable 인터페이스를 구현해야 한다.
POJO(Plain Old Java Object)
- 특정 프레임워크, 규칙, 컨벤션 등에 의존하지 않고, 단순히 필드와 메서드로 구성된 순수한 자바 객체를 의미한다.
- 이는 2000년대 초반 EJB와 같은 복잡하고 무거운 Java 엔터프라이즈 스펙에 대한 반발로 등장한 개념이다.
- 정의
- 프레임워크 비의존성 : 특정 프레임워크에 종속되지 않으며, 필요한 경우 여러 프레임워크와 쉽게 통합할 수 있다.
- 간결성 : 불필요한 인터페이스 구현이나 상속 없이, 필요한 필드와 메서드만 포함한다.
- 유연성 : 다양한 환경에서 재사용 가능하며, 비즈니스 로직을 간단하고 명확하게 유지한다.
- 주요 특성
- 프레임워크 비의존성
- 경량성 : 불필요한 기능이나 메타데이터 포함하지 않는다. 클래스가 가볍고 이해하기 쉬운 상태로 유지가능
- 순수한 자바 : 특별한 런타임 환경이나 설정이 필요하지 않음
- 테스트 용이성 : 외부 종속성이나 프레임워크에 의존하지 않으므로 단위테스트 작성이 용이하다.
- POJO와 자바빈(JavaBean)의 차이점은 무엇인가요?
- 자바빈은 몇 가지 추가적인 규칙이 있다. 기본 생성자 + getter, setter, Serializable 인터페이스 구현.
- Pojo를 사용하는 주요 프레임워크는 무엇이 있나요?
- Spring, Hibernate. Spring은 POJO를 빈으로 관리하여 DI를 제공. Hibernate는 POJO를 엔티티로 사용하여 데베 테이블과 매핑한다.
- AOP 같은 인터페이스를 기반으로 생성되는 프록시가 빈에 등록되면 POJO가 아닐 수 있다.
'Java' 카테고리의 다른 글
직렬화 역직렬화 (0) | 2024.04.10 |
---|---|
Garbage Collection (1) | 2024.04.10 |
OOP(Object Oriented Programming) (0) | 2024.04.05 |
쓰레드(Thread) (0) | 2024.04.05 |
예외 처리 (Java) (0) | 2024.04.05 |