POJO란?
Plain Old Java Object, 오래된 방식의 단순한 자바 오브젝트
즉, 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 지칭합니다.
토비의 스프링에서는 특정 기술규약과 환경에 종속되지 않는다고 해서 모두 POJO라고 지칭할 순 없다고 합니다. 진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 POJO 라고 설명하기도 했습니다.
POJO가 주목 받은 배경
EJB(Enterprise JavaBeans)
기업의 IT 시스템의 요구사항이 늘어나고 기초적인 JDK로는 한계가 있어서 EJB 기술이 등장하였습니다. EJB의 경우에 아래의 문제를을 해결하기 위해 등장했습니다.
- 기업의 업무 복잡도가 증가함에 따라 비지니스 로직이 복잡해졌습니다.
- 사용자의 처리의 요구를 빠르고 안정이고 확장 가능한 형태로 유지하기 위해 필요한 로우레벨의 기술적인 처리요구가 필요합니다. (트랜잭션 처리, 상태 관리, 멀티스레딩, 리소스 풀링, 보안 등)
다만 EJB의 경우에는 현실적이지 않고 과도한 엔지니어링으로 실패했습니다. EJB는 필요한 것이 많고, 복잡하며 컨테이너 밖에서는 정상적으로 동작하지 않았습니다.
특히, EJB 스펙을 따르는 비지니스 오브젝트들은 객체지향적인 특징과 장점을 포기해야합니다. EJB는 상속과 다형성 등을 사용할 수 없고, 간단한 기능 하나를 위해서 많은 인터페이스와 EJB 의존적인 상속을 해야했습니다.
EJB는 형편없는 생산성과 느린 성능, 불필요한 기술적인 복잡도, 과도한 스펙 등의 문제 로 인해 POJO 방식으로 돌아가게 됩니다.
POJO를 지향해야하는 이유
POJO의 목적은 자바의 객체지향적인 특징을 살려 비즈니스 로직에 충실한 개발이 가능하도록 하는 것입니다.
POJO의 장점
- 깔끔한 코드
- 특정 프레임워크에 종속되지 않아 간편한 테스트
- 객체지향적인 설계를 자유롭게 적용
POJO 프레임워크
POJO 프레임워크란 POJO 프로그래밍이 가능하도록 기술적인 기반을 제공하는 프레임워크입니다.
스프링 프레임워크를 대표적인 POJO 프레임워크로 꼽을 수 있습니다.
스프링을 이용하면 POJO 프로그래밍의 장점을 그대로 살려서 엔터프라이즈 애플리케이션(EA)의 핵심로직을 객체지향적인 POJO를 기반으로 깔끔하게 구현하고, 동시에 엔터프라이즈 환경의 각종 서비스와 기술적인 필요를 POJO방식으로 만들어진 코드에 적용할 수 있습니다.
EA (Enterprise Application)는 비즈니스 또는 정부와 같은 회사 환경에서 작동하도록 설계된 대규모 소프트웨어 시스템 플랫폼
POJO 예제
public class MyPojo {
private String name;
private int age;
public String getName() {
return name;
}
public String getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
위와 같이 가장 기본적인 형태의 JAVA 객체를 POJO라고 합니다.
JAVA Bean이 아닌 Getter와 Setter로 구성된 가장 순수한 형태의 기본 클래스를 POJO라 지칭합니다.
POJO는 가독성과 재사용성을 높이기 위해 객체를 정의하는데 사용되는 Bean과 유사한 점이 있습니다.
POJO vs Java Beans
Java bean은 POJO이다. 그러나 POJO는 Java bena이 아닙니다.
POJO는 java bean 보다 범주가 더 넓은 개념입니다.
POJO
- POJO는 자바 객체 표준이며 어떤 특정하고 엄격한 규칙이 존재하지 않습니다.
- POJO는 가독성과 재사용성을 중요시하게 여깁니다.
- POJO는 엄격하지 않은 만큼 쓰기도 쉽고 읽기도 쉬워 많이 사용되어 왔습니다.
public class Animal {
String dog;
public String cat;
private int legs;
public Animal(String dog, String cat, int legs) {
this.dog = dog;
this.cat = cat;
this.legs = legs;
}
public getDog() {
return this.dog;
}
}
Java Beans
- POJO와 달리 엄격한 규칙을 가지고 있습니다.
- Fields 는 접근제어자가 private 이어야만 합니다.
- Fields 는 getter 와 setter 를 가져야 합니다.
- constructor 는 argument 를 가져서는 안됩니다.
- Fileds 는 getter 와 setter 로만 접근되어야만 합니다.
public class Animal {
private int legs;
Animal() {
}
public setLegs(int legs) {
this.legs = legs;
}
public getLegs() {
return legs;
}
}
'Programming > Java, Spring' 카테고리의 다른 글
[Spring boot] 스프링 부트란??? (0) | 2022.10.12 |
---|---|
[Spring] DI / IOC란? / 의존성을 주입하는 방법 (0) | 2022.10.11 |
[JAVA]람다식이란? / 람다식의 특징 / Lambda Expression (0) | 2022.09.25 |
[Spring] 스웨거 어노테이션 / Swagger 2.0 vs Swagger 3.0 차이 (0) | 2022.09.22 |
[JAVA] Generic이란?? (0) | 2022.07.16 |