프로그래밍 공부
Java Bean(EJB), POJO, Spring Bean 본문
☕ POJO vs. 스프링 빈 vs. EJB 비교 정리
자바 개발에서 객체를 관리하는 방식에는 POJO, 스프링 빈, EJB 등이 있다.
1️⃣ POJO (Plain Old Java Object)
POJO란?
POJO는 특정 프레임워크나 환경에 종속되지 않는 일반적인 자바 객체.
단순한 클래스로, 어떠한 어노테이션이나 인터페이스도 필요하지 않음.
✅ POJO의 특징
- 특정 프레임워크에 종속되지 않음
- 단순한 getter/setter 메서드를 가질 수 있음
- Spring, JPA, Hibernate, MyBatis 등과 독립적으로 사용 가능
- 재사용성이 높고, 테스트가 용이함
✅ POJO 예제
public class User {
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
➡️ POJO는 특정 기술에 종속되지 않으며, 스프링 없이도 사용 가능
2️⃣ 스프링 빈 (Spring Bean)
스프링 빈이란?
스프링 컨테이너에서 생성 및 관리되는 객체.
객체의 생명주기를 스프링이 관리하고, 의존성 주입(DI) 등을 받을 수 있다.
✅ 스프링 빈의 특징
- 스프링 컨테이너(ApplicationContext)에서 관리
- 의존성 주입(DI)을 받을 수 있음
- 기본적으로 싱글톤 패턴으로 관리됨 (필요 시 스코프 변경 가능)
- @Component, @Service, @Repository, @Bean 등의 어노테이션을 사용하여 등록
✅ 스프링 빈 예제
import org.springframework.stereotype.Component;
@Component // 스프링 컨테이너에 등록됨
public class UserService {
public String getUserInfo() {
return "사용자 정보 반환";
}
}
➡️ 스프링 컨테이너가 관리하며, DI를 통해 다른 객체에서 사용할 수 있음
3️⃣ EJB (Enterprise Java Beans)
EJB란?
EJB는 자바 EE (Enterprise Edition)에서 제공하는 서버 사이드 컴포넌트.
스프링이 등장하기 전에 트랜잭션 관리, 보안, 분산 컴퓨팅 등의 기능을 제공하는 기술이었다.
✅ EJB의 특징
- J2EE 서버(WebLogic, JBoss 등)에서 실행되어야 함
- 트랜잭션 관리, 보안, 원격 호출(RMI) 등의 기능 제공
- 무거운 구조로 인해 설정이 복잡하고 개발 속도가 느림
- 스프링 등장 이후 점점 사용이 줄어듦
✅ EJB 예제
import javax.ejb.Stateless;
@Stateless // EJB 빈으로 등록
public class UserServiceBean {
public String getUserInfo() {
return "EJB 사용자 정보 반환";
}
}
➡️ EJB는 WAS(Web Application Server) 환경에서만 실행 가능
🔥 POJO vs. 스프링 빈 vs. EJB 비교
항목 POJO 스프링 빈 EJB
프레임워크 종속성 | 없음 | 스프링에 종속 | J2EE(Java EE) 종속 |
실행 환경 | 어디서나 실행 가능 | 스프링 컨테이너 필요 | WAS (WebLogic, JBoss 등) 필요 |
관리 주체 | 개발자가 직접 관리 | 스프링 컨테이너가 관리 | EJB 컨테이너가 관리 |
의존성 주입(DI) | 불가능 | 가능 (@Autowired) | 가능 (@EJB) |
트랜잭션 관리 | 직접 구현해야 함 | 지원 (@Transactional) | 자동 지원 |
원격 호출 | 불가능 | 불가능 | 가능 (RMI) |
개발 복잡도 | 낮음 (간단한 코드) | 중간 (Spring 설정 필요) | 높음 (EJB 설정 복잡) |
사용 여부 | 여전히 사용 | 현재 가장 많이 사용됨 | 거의 사용되지 않음 |
✅ 결론
✔ POJO: 가장 단순한 자바 객체, 프레임워크에 의존하지 않음
✔ 스프링 빈: 스프링 컨테이너에서 관리하는 객체, DI 및 트랜잭션 지원
✔ EJB: J2EE 기반의 서버 사이드 컴포넌트, 현재는 사용이 줄어듦
💡 EJB는 무겁고 설정이 복잡하여, 현재 대부분의 프로젝트에서는 스프링이 대체했다.
💡 POJO를 스프링 빈으로 등록하면 DI 및 트랜잭션 관리 등의 이점을 받을 수 있음
'Programming > Spring' 카테고리의 다른 글
Spring Bean의 즉시(Eager) 초기화와 지연(Lazy) 초기화 (0) | 2025.02.10 |
---|---|
Spring 의존성 주입 (1) | 2025.02.06 |
Spring Container (0) | 2025.02.06 |
@Component와 @Bean의 차이 (0) | 2025.02.06 |
Class 형태로 Bean 접근 방법 (0) | 2025.02.06 |
Comments