반응형
EJB (Enterprise JavaBeans) 개요
**EJB(Enterprise JavaBeans)**는 기업 환경에서 서버 측 애플리케이션을 개발하기 위한 컴포넌트 모델입니다. Sun Microsystems에 의해 제안된 이 모델은 비즈니스 로직과 시스템 서비스를 분리하여, 개발자가 복잡한 기술적 세부사항에 신경 쓰지 않고도 효율적으로 애플리케이션을 개발할 수 있도록 돕습니다
. EJB는 주로 다음과 같은 구성 요소로 이루어져 있습니다:
- Enterprise Bean: 비즈니스 로직을 구현한 서버 컴포넌트입니다. 세션 빈(Session Bean)과 엔티티 빈(Entity Bean)으로 나뉩니다.
- Container: EJB 서버와 Enterprise Bean 사이에서 클라이언트의 요청을 처리하고, 데이터베이스 및 트랜잭션 처리를 관리합니다.
- EJB Server: 컨테이너를 관리하며, 필요한 시스템 서비스를 제공합니다.
- Client Application: EJB를 사용하는 클라이언트 애플리케이션입니다.
EJB의 특징
- 인스턴스 풀링: 객체를 미리 생성하여 메모리에 저장함으로써 많은 동시 접속자를 지원합니다.
- 트랜잭션 처리: 컨테이너가 자동으로 트랜잭션을 관리하여 데이터 조작의 안정성을 높입니다.
- 퍼시스턴스 관리: 빈즈의 상태를 자동으로 관리하여 개발자가 비즈니스 로직에 집중할 수 있게 합니다
EJB의 장점과 단점
**EJB(Enterprise JavaBeans)**는 기업 애플리케이션 개발에 있어 많은 장점과 단점을 가지고 있습니다. 아래에서 각각을 자세히 살펴보겠습니다.
장점
- 인스턴스 풀링: EJB는 객체를 미리 생성하여 메모리에 저장함으로써, 많은 동시 접속자에 대한 안정성을 지원합니다. 이를 통해 성능을 향상시키고 자원 소모를 줄일 수 있습니다
- 트랜잭션 처리: EJB 컨테이너는 모든 처리 메소드에 대해 자동으로 트랜잭션을 관리합니다. 이는 데이터 조작의 안정성을 높이고, 개발자가 트랜잭션 관리에 신경 쓰지 않아도 되게 합니다
- 퍼시스턴스 관리: EJB는 빈의 상태를 자동으로 활성화 및 비활성화하여 메모리 관리를 효율적으로 수행합니다. 이는 데이터베이스와의 연동을 간소화하고, 개발자가 비즈니스 로직에 집중할 수 있게 합니다.
- 다양한 아키텍처 지원: EJB는 FAT Client에서 Thin Client로의 전환 및 n-tier 시스템 구축을 지원하여 다양한 아키텍처 환경에서 유연하게 사용할 수 있습니다.
- 보안 및 라이프 사이클 관리: EJB 컨테이너는 컴포넌트의 생성, 소멸, 라이프 사이클 관리, 보안 및 쓰레딩과 같은 다양한 서비스를 제공합니다.
단점
- 복잡한 프로그래밍 모델: EJB는 복잡한 구조와 규약으로 인해 학습 곡선이 가파르며, 개발자가 이해하고 활용하는 데 어려움을 겪을 수 있습니다
- 특정 환경 종속성: EJB는 특정 기술이나 환경에 종속적인 코드가 많아, 다른 플랫폼으로의 이동성이 떨어집니다 .
- 자동화된 테스트의 어려움: EJB 구조는 테스트하기 어려운 특성을 가지고 있어, 자동화된 테스트를 구현하는 데 상당한 노력이 필요합니다 .
- 객체 지향적이지 않음: EJB는 객체 지향적인 설계 원칙을 따르지 않는 경우가 많아, 코드의 재사용성과 유지보수성이 떨어질 수 있습니다
- 개발 생산성 저하: 복잡한 설정과 규약으로 인해 개발 생산성이 낮아질 수 있으며, 이는 프로젝트 진행 속도에 부정적인 영향을 미칠 수 있습니다 .
.EJB 버전 차이
EJB는 여러 버전이 있으며, 각 버전마다 기능과 성능이 개선되었습니다:
버전 | 출시 연도 | 주요 특징 |
EJB 1.0 | 1999 | 기본적인 세션 빈과 엔티티 빈 지원, 원격 메소드 호출 기능 포함 |
EJB 2.0 | 2001 | 메시지 기반 통신 지원, 홈 인터페이스와 원격 인터페이스 도입 |
EJB 3.0 | 2006 | POJO(Plain Old Java Object) 기반의 간소화된 프로그래밍 모델, 어노테이션 지원, JPA(Java Persistence API) 도입 |
EJB 3.1 | 2009 | 웹 서비스 통합, 더 나은 CDI(Context and Dependency Injection) 지원, 경량화된 컨테이너 모델 |
EJB 3.2 | 2014 | Java EE 7의 일환으로 클라우드 환경에 최적화된 기능 추가 |
한계 및 대안
EJB는 복잡성과 성능 문제로 인해 많은 개발자들로부터 비판을 받았습니다. 특히, 객체 지향적인 특성을 포기해야 했고, 자동화된 테스트가 어렵다는 단점이 있었습니다.
EJB는 강력한 기능과 안정성을 제공하지만, 그 복잡성과 종속성으로 인해 사용 시 신중한 고려가 필요합니다.
. 이러한 문제를 해결하기 위해 Spring 프레임워크와 같은 경량 프레임워크가 등장하였으며, 이는 EJB의 기능을 유지하면서도 복잡성을 줄여주고 코드의 가독성을 높였습니다
반응형
'Programming' 카테고리의 다른 글
RSS Feed를 가져오는 C# 예제를 통한 Async 효율성 테스트 (0) | 2017.04.11 |
---|---|
Factory Method Pattern (0) | 2016.10.15 |
Protorype Pattern (0) | 2016.10.09 |
우분투 (Ubuntu 16.04) 에 JAVA 설치 (0) | 2016.07.31 |
변화된 모던 C++, 심층분석 - 불어오는 변화의 바람 C++98 to C++11/14 (0) | 2016.01.01 |