본문 바로가기
👨‍🏫Study/JAVA

[JAVA] EJB(Enterprise JavaBeans)

by 코푸는 개발자 2022. 4. 15.
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

댓글