728x90
EJB란?
EJB는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다.
EJB 개발의 특징과 필요성
- 동시접속자수가 10,000명이상인 사이트 구축시 사용하는 컴포넌트 기술
- 동시접속자수가 많은 가운데 안정적인 트랜잭션이 필요한 사이트 구축시 사용
- 접속자수가 많은 공공기관, 기상청, 병무청, 금융, 보험, 포털사이트, 게임사이트, 기업등에서 집중적으로 사용
- EJB 시스템은 속도는 느리지만 개발시에 개발자에게 많은 자동화된 기능을 제공해 분산 시스템 구축을 쉽게 해준다.
- EJB는 JSP, Beans를 사용한 시스템보다 속도는 느리지만 안정적인 분산 시스템을 제공
- 기초기술(JSP, BEANS, RMI, Servlet, Serialization직렬화, Transaction, Connection Pooling)을 알면 EJB는 배우기 쉽고 사용하기 쉽다.
- EJB 규약을 집중적으로 습득하면 쉽게 EJB 컴포넌트를 개발 가능
EJB 개발을 위한 프로그래밍 방법 및 장점
*EJB 컨테이너(Weblogic)로부터 아래의 항목을 자동으로 지원 받을 수 있음으로 애플리케이션을 신속히 구축할 수 있다.
- 인스턴스 풀링: 객체를 미리 생성하여 메모리에 저장하여 사용준비 상태에 들어가도록 함, 많은 동시접속자에 대한 안정성 지원
- 트랜젝션 처리: 자동으로 컨테이너가 모든 처리메소드에 대하여 트랜젝션을 처리해줌, 안정적인 데이터 조작
- 퍼시스턴스 관리: 빈즈의 상태를 메모리에서 시용여부에 따라 자동으로 활성화/비활성화를 실행해 관리해줌
- FAT Client를 Thin Client로, n-tier 시스템을 구축할 수 있다.
- Weblogic, Webspere주로 사용, 국산은 제우스 사용
- EJB 컴포넌트들이 Loading되어 활용하는 서버쪽 프로그램, 컴포넌트의 생성, 소멸, 라이프 사이클, 보안, Threading 등이 서비스를 제공
EJB 단점
- 복잡한 프로그래밍 모델
- 특정 환경에 쉽게 종속적인 코드
- 필요없이 특정 기술에 종속적인 코드
- 컨테이너 내부에서만 동작할 수 있는 객체구조
- 자동화된 테스트가 매우 어렵거나 불가능
- 객체지향적이지 않음
- 형편없는 개발생산성
- 한심한 이동성(Portablity)
EJB의 종류
EJB에는 다음 3가지 종류가 있다.
- 세션 빈(Session Bean) : DB 연동이 필요 없다.
- 엔티티 빈(Entity Bean)
- 데이터베이스의 데이터를 관리하는 객체
- Insert(삽입), Update(수정), Delete(삭제), Select(조회)
- DB 관련 쿼리느 자동으로 만들어지고 개발자는 고급 업무 처리에 집중할 수 있다.
- DB가 수정되면 코드 수정 없이 다시 배포(설정 문서 만들어서 복사)
- 메시지 구동 빈(Message-driven Bean) : JMS로 빈을 날려준다.
EJB 컨테이너가 제공하는 것
- 트랜젝션 관리
- 인증과 접근 제어
- EJB 인스턴스 풀링
- 세션관리
- 지속성 메커니즘
- 데이터베이스 커넥션 풀링
*EJB에 비해 Spring을 Java 기술 요건으로 요구하는 건수가 급격하게 증가 추세이다.
*EJB와 Spring은 상호 배타적인 기술이 아니며 두 기술을 동시에 요구하는 경우도 증가세이다.
- EJB 사용하여 개발하게 되면 기술 구조 변경시, 서버 환경에 종속된다.
- 현재 POJO(Plain Old Java Object) 중심의 개발방식을 기술적으로 지원하며 특정 컴포넌트 모델에 종속적이지 않게 개발하는 것이 추세이다.
- 구조적인 유연성이 중시되면서 많은 회사들이 Light-weight Platform을 선호한다.
예시코드
@Stateless
public class CustomerService {
@PersistenceContext
private EntityManager entityManager;
public void addCustomer(Customer customer) {
entityManager.persist(customer);
}
}
728x90
'👨🏫Study > JAVA' 카테고리의 다른 글
[JAVA] G1GC (0) | 2022.04.20 |
---|---|
[JAVA] Garbage Collector (0) | 2022.04.19 |
[Database] JDBC (0) | 2022.04.14 |
[JAVA] Servlet(서블릿), JSP(Java Server Page) (0) | 2022.04.14 |
[JAVA] Java EE (0) | 2022.04.11 |
댓글