EJB 개요

hwanse·2021년 2월 4일
1
post-custom-banner



순서

  1. EJB 개념
  2. 등장 배경
  3. EJB 구조
  4. EJB 장/단점




개요

EJB(Enterprise Java Bean)
위 단어에서 Enterprise는 기업을 말하는 것이고 Java Bean은 자바 객체를 재사용 가능하게 컴포넌트화 시킬 수 있는 코딩 방침을 정의한 것이다.
EJB는 Sun Microsystems사가 기업환경 개발을 단순화하기 위해 제창한 스펙이라고 말한다. Java EE의 API 중 하나이고, 주로 웹 시스템에서 JSP로 화면을 구성하고 EJB는 비즈니스 로직을 처리하는 역할을 한다. 즉, EJB는 기업환경의 시스템을 구현하기 위해 위 스펙에 따라 비즈니스 로직을 처리하는 서버 애플리케이션인 것이다.



등장 배경

과거 자바로 서버측 애플리케이션 개발을 할 때 아래와 같은 문제가 있었다고 한다.

  • 애플리케이션에 필요한 비즈니스 로직을 개발하면서 데이터 베이스 처리 및 트랜잭션 처리의 프로그램이 필요로 하기 때문에 애플리케이션 개발에 어려움이 있음
  • 각 애플리케이션 서버에서는 독자적인 API가 제공되고 있기 때문에 각사의 API를 사용해서 작성한 애플리케이션에서는 이동성이 아니고 부품화가 곤란함

위와 같은 서버 어플리케이션의 생산성과 향상과 이동성을 실현하기 위해서 생겨난 것이 EJB이다. (이동성과 부품화는 무슨 말인지 이해가 안간다..)



구조

EJB 는 Enterprise Bean, Container, EJB Server, Client Application 으로 구성되어 있다

  • Enterprise Bean : 비즈니스 로직을 실장한 서버 컴포넌트
    EnterpriseBean 이하에 2가지 모델이 있음
    • Session Bean : DB 연동이 필요 없다
    • Entity Bean
      • 데이터베이스의 데이터를 관리하는 객체
      • Insert, Update, Delete, Select
      • DB 관련 쿼리는 자동으로 만들어져 개발자는 비즈니스 로직 개발에 집중
      • DB가 수정되면 코드 수정 없이 다시 배포

일반적으로 클라이언트가 Session Bean을 불러 Session Bean이 Entity Bean을 불러서 DB에 접근

  • Container
    EJB서버와 Enterprise Bean 사이 중간에 위치해 클라이언트 애플리케이션은 이 Container를 통해 Enterprise Bean에 접근한다. 컨테이너가 데이터베이스 처리와 트랜잭션 처리 등을 숨기기 위해 개발자와 그것들을 의미 하지 않는 개발이 가능하도록 해줌

  • EJB Server
    EJB Server는 컨테이너를 관리하여 EJB로서 필요한 시스템 레벨의 서비스(데이터베이스 처리, 트랜잭션 처리)를 실현한다.

  • Client Application
    EJB에 준거한 클라이언트 애플리케이션
    Java Applet, Java Application, Servlet, JavaServerPages(JSP) 베이스의 애플리케이션 등이 있음



장단점

장점

  • 인스턴스 풀링 : 객체를 미리 생성하여 메모리에 저장해 준비 상태에 들어가게 한다. 동시 접속자에 대한 안정성을 지원 가능
  • 트랜잭션 처리 : 자동으로 컨테이너가 모든 처리 메소드에 대하여 트랜잭션 처리를 해준다. 안정적인 데이터 조작 가능
  • 퍼시스턴스 관리 : Bean 의 상태를 메모리에서 사용 여부에 따라 자동으로 활성화/비활성화를 실행하여 관리
  • FAT Client 를 Thin Client로, n-tier 시스템을 구축할 수 있음
  • Weblogic, Webspere 주로 사용, 국산은 제우스를 사용
  • EJB 컴포넌트들이 로딩되어 활동하는 서버 쪽 프로그램, 컴포넌트의 생성,소멸,라이프 사이클,보안,Threading 등 서비스 제공

단점

  • 객체 지향적이지 않다
  • 복잡한 프로그래밍 모델
  • 특정 환경, 기술에 종속적인 코드
  • 컨테이너 안에서만 동작할 수 있는 객체 구조
  • 자동화된 테스트가 매우 어려워 불가능
  • 개발 생산성을 위해 등장했으나 실제론 개발 생산성이 떨어지고 이동성이 부족



참고

전체적으로 Spring이 등장하게 된 배경과 연관이 있어 조사해봤으나 솔직히 EJB에 대한 내용 이해가 잘 안간다... 스프링과의 차이점을 좀 더 찾아볼 필요가 있어보인다.

profile
만사가 귀찮은 ISFP가 쓰는 학습 블로그
post-custom-banner

0개의 댓글