공부해봅시당

[Spring] EJB(Enterprise JavaBeans) 본문

STUDY/Spring

[Spring] EJB(Enterprise JavaBeans)

tngus 2024. 2. 23. 07:17

EJB(Enterprise JavaBeans)란?

EJB(Enterprise JavaBeans)는 자바 EE(Java Platform, Enterprise Edition) 사양의 일부로,

엔터프라이즈 애플리케이션을 개발하기 위한 서버 측 컴포넌트 모델

 

EJB는 비즈니스 로직을 캡슐화하고, 분산 애플리케이션을 구축할 때 필요한 서비스(예: 트랜잭션 관리, 보안, 원격 액세스)를 제공

 

EJB 분류

1. 세션 빈(Session Beans)

비즈니스 로직을 수행하는 컴포넌트

상태가 있는(Stateful) 세션 빈과 상태가 없는(Stateless) 세션 빈, 그리고 싱글톤(Singleton) 세션 빈으로 나뉨

1) 상태가 있는(Stateful) 세션 빈

클라이언트별로 상태 정보를 유지

2) 상태가 없는(Stateless) 세션 빈

상태 정보를 유지하지 않으며, 여러 클라이언트 요청에 대해 재사용될 수 있음

3) 싱글톤(Singleton) 세션 빈

애플리케이션 전체에서 하나의 인스턴스만 존재

 

2. 엔티티 빈(Entity Beans)

데이터베이스의 영속적 데이터를 표현하는 컴포넌트

EJB 3.0부터는 JPA(Java Persistence API)가 엔티티 빈의 역할을 대체하여,

보다 간편한 ORM(Object-Relational Mapping) 기능을 제공

3. 메시지 구동 빈(Message-Driven Beans)

비동기 메시징 시스템(JMS, Java Messaging Service)을 통해 수신된 메시지를 처리하는 컴포넌트

이는 이벤트 기반 프로그래밍 모델을 지원하며, 일반적으로 백그라운드 작업 처리에 사용

 

EJB의 주요 특징

분산 컴포넌트

EJB는 원격 및 분산 환경에서 실행될 수 있도록 설계

컨테이너 관리 서비스

EJB 컨테이너는 선언적 트랜잭션 관리, 보안, 라이프사이클 관리, 컨커런시 관리 등의 서비스를 제공

엔터프라이즈 레벨의 애플리케이션 개발

EJB는 대규모, 고성능, 고가용성을 요구하는 엔터프라이즈 애플리케이션 개발을 위해 설계됨

 

EJB의 한계

EJB는 초기에 복잡성과 높은 학습 곡선으로 인해 비판을 받았음

이러한 비판을 해결하기 위해 EJB 3.0 사양부터는 개선된 프로그래밍 모델(예: 애너테이션 사용, JPA 도입)을 제공하여 개발자 친화적인 접근 방식을 채택함

그럼에도 불구하고, 스프링 프레임워크와 같은 경쟁 기술이 제공하는 경량화된 모델과 유연성 때문에 많은 개발자들이 EJB 대신 스프링을 선택하는 경향이 있음

 

EJB와 스프링 비교

기준 EJB 스프링 프레임워크
정의 자바 EE의 서버 측 컴포넌트 모델 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 프레임워크
개발 모델 컴포넌트 기반 개발, 컨테이너 관리 서비스 제공 POJO 기반 개발, 경량 컨테이너
프로그래밍 모델 초기 버전은 복잡, EJB 3.0부터 개선된 어노테이션 기반 모델 도입 어노테이션 및 XML 기반 구성, 간결하고 유연한 프로그래밍 모델 제공
주요 특징 분산 컴포넌트, 트랜잭션 관리, 보안 등 엔터프라이즈 서비스 제공 IoC/DI, AOP, PSA 등 고급 프로그래밍 개념 제공
사용 용이성 EJB 3.0 이후 사용성 개선, 그러나 여전히 스프링에 비해 복잡할 수 있음 학습 곡선 상대적으로 낮음, 유연하고 간편한 설정 가능
성능 무거운 엔터프라이즈 서비스로 인해 성능 오버헤드가 발생할 수 있음 경량 컨테이너, 성능 최적화에 유리
이식성 자바 EE 사양에 종속적, 특정 애플리케이션 서버에 묶일 수 있음 높은 이식성, 다양한 환경과 서버에 쉽게 적용 가능
유연성 및 확장성 구조가 비교적 고정적, 확장성에 제약이 있을 수 있음 매우 유연하고 확장성 높음, 다양한 프로젝트와 환경에 적응 가능
커뮤니티 및 지원 자바 EE 커뮤니티에 의해 지원됨, 사용이 감소하는 추세 강력하고 활발한 커뮤니티, 광범위한 문서 및 지원 가능
적합한 사용 사례 대규모 엔터프라이즈 애플리케이션, 특히 자바 EE 환경에서의 개발 필요시 광범위한 엔터프라이즈 애플리케이션, 특히 유연성과 경량성이 중요한 경우

 

EJB와 스프링은 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 두 가지 다른 접근 방식

 

EJB는 자바 EE의 공식 사양으로, 무거운 엔터프라이즈 서비스를 제공하는 반면,

스프링은 개발자에게 더 많은 유연성과 간결한 프로그래밍 모델을 제공

 

스프링의 등장으로 많은 개발자와 조직이 스프링을 선호하게 되었으며,

현재는 스프링이 자바 엔터프라이즈 애플리케이션 개발의 사실상의 표준으로 널리 사용되고 있음

 


참조

https://woongsin94.tistory.com/357

 

EJB(Enterprise Java Bean)

개념 EJB(Enterprise Java Bean), 기업환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델이다. 일반적으로 업무 로직을 가지고 있는 서버 어플리케이션을 EJB라고 한다. Enterprise JavaBeans(EJB)는 독립한

woongsin94.tistory.com

https://rainbow97.tistory.com/entry/JAVA-EJBEnterprise-JavaBeans

 

[JAVA] EJB(Enterprise JavaBeans)

EJB란? EJB는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주

rainbow97.tistory.com

https://hoon93.tistory.com/56

 

EJB와 스프링 개론

EJB(Enterprise Java Bean) Java bean이란 자바 객체를 재사용 가능하도록 즉, 컴포넌트화시킬 수 있는 코딩 방침을 정의한 것을 의미한다. (bean은 쉽게 component 또는 객체라고 이해하면 좋다.) EJB란 엔터프

hoon93.tistory.com