https://sundaland.tistory.com/53
자바에서 사용되는 용어로, 특별한 제약이나 종속성을 가지기 않고 일반적은 자바 객체를 말한다.
해당 용어는 자바 기술의 복잡성을 줄이기 위해 코딩 시 간단하고 투명한 방법을 사용하자는 개념에서 유래하였다.
- 단순성 : 복잡한 프레임워크 인터페이스나 클래스를 상속받지 않는다. 대신 표준 자바 클래스로서 필요한 필드, 메서드를 가지며, 다른 일반 자바 객체처럼 작동한다.
- 재사용성과 테스트 용의성 : 의존성이 적기 때문에 다른 환경에서 재사용하기 쉽고, 단위 테스트하기에도 간편하다.
- 투명성 : 특정 프로토콜이나 환경에 종속되지 않기 때문에 코드의 명확성과 이해하기 쉬움을 제공한다.
- 프레임워크 독립성 : 특정 기술 스택에 종속되지 않기 때문에, 다양한 프레임워크와 기술에 활용할 수 있다.
- 직렬화 가능 : 자바의 직렬화 인터페이스를 구현할 수 있어, 네트워크를 통한 객체의 전송이나 객체의 영속화가 필요할 때 유용하게 사용된다.
public class Person {
// 필드 (private으로 캡슐화)
private String name;
private int age;
// 매개변수가 없는 생성자
public Person() {
// 기본 생성자
}
// 매개변수가 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// name 필드에 대한 게터 메서드
public String getName() {
return name;
}
// name 필드에 대한 세터 메서드
public void setName(String name) {
this.name = name;
}
// age 필드에 대한 게터 메서드
public int getAge() {
return age;
}
// age 필드에 대한 세터 메서드
public void setAge(int age) {
this.age = age;
}
}
이러한 특징덕에 POJO는 자바 기반 애플리케이션 개발에서 널리 활용되며, 간단하고 강력한 개발 방식을 제공한다.
POJO Vs Java Beans
둘다 자바 프로그래밍 언어에서 사용되는 두 가지 종류의 객체지만, 서로 목적과 특징에 차이가 있다.
POJO
- 목적 : 자바의 복잡성을 최소화하고, 간단하게 객체를 정의하려는 목적으로 사용된다.
- 특징 : 복잡한 클래스 계층이나 프레임워크에 의존하지 않고, 순수한 자바 객체로 구성된다. 어떠한 클래스를 상속받거나 인터페이스를 구현하지 않아도 되며, 특별한 제약을 받지 않는다.
Java Beans
- 목적: 컴포넌트 기반의 소프트웨어 엔지니어링에 사용된다. 재사용 가능하고 캡슐화된 여러 속성을 갖는 객체를 생성하기 위해 사용된다.
- 특징: JavaBeans는 특별한 명명 규칙과 설계 규칙을 따른다. 주로 프라이빗 필드와 이 필드에 접근할 수 있는 퍼블릭 getter 및 setter 메서드를 포함한다. 또한 직렬화 가능해야 하고, 매개변수가 없는 생성자를 가지고 있어야 한다.
POJO와 JavaBeans의 관계
POJO와 JavaBeans는 모두 자바 객체지만, JavaBeans는 좀 더 특정한 규칙과 구조를 따라야 하는 반면, POJO는 그러한 제약이 없다. JavaBeans는 POJO의 하위 집합으로 볼 수 있고, 모든 JavaBeans는 POJO이지만 모든 POJO가 JavaBeans는 아니다. POJO는 단순하고 제약이 적어 다양한 형태로 구현될 수 있지만, JavaBeans는 컴포넌트 개발에 필요한 일련의 규칙을 따라야 한다.
이 두 용어는 서로 연관되어 있지만, JavaBeans가 더 엄격한 규칙을 갖고, 그 기능을 특정 방식으로 구현해야 한다는 점에서 차이가 있다. JavaBeans는 프로퍼티, 이벤트, 리스너와 같은 요소를 사용하여 컴포넌트 기반의 개발에 적합하도록 설계되어 있다.
'스프링 프레임워크' 카테고리의 다른 글
The IoC Container [4] (0) | 2024.08.14 |
---|---|
The IoC Container (3) (0) | 2024.08.09 |
The IoC Container (2) (0) | 2024.08.09 |
메이븐 (Maven) Build System (0) | 2024.08.08 |
The IoC Container (1) (0) | 2024.08.08 |