Java Bean
자바 빈즈는 자바로 작성된 소프트웨어 컴포넌트들을 지칭한다.
자바 빈은 클래스들이 복합적으로 이루어진 구조를 말한다. 자바 객체를 재사용이 가능하도록 정의한 것이다.
EJB
EJB는 기업급의 어플리케이션 개발을 단순화하기 위해 발표한 스펙이다.
개발을 하다 보면 많은 객체들을 만들게 되는데, 이러한 비즈닉스 객체들을 관리하는 컨테이너를 만들어 필요할 때마다 객체를 가져다 쓰는 식으로 관리하기 위해 EJB가 탄생하게 된 것이다.
EJB의 구조
EJB는 거대 규모의 시스템 구축을 위한 컴포넌트 모델 이라고 할 수 있다.
컴포넌트 모델이라는 의미는 각각의 소프트웨어를 독립적인 모듈로 제작하여 재사용성과 호환성을 높이는 것이다.
일반적으로 사용되는 Java EE의 API로 클라이언트가 볼 수 있는 화면단은 JSP가, 비즈니스 로직은 EJB가 구현하는 구조이다. 또한, 비즈니스 로직을 구현한 것을 Enterprise Bean이라 하고, Database처리, 트랜잭션 처리같은 시스템 서비스를 구현해놓은 부분을 Container라고 한다.
EJB의 장점
- 객체를 미리 생성하여 메모리에 저장
- 많은 동시접속자에 대해 안정성을 확보(인스턴스 풀링)
- 자동으로 컨테이너가 모든 처리 메서드에 대하여 트랜잭션을 처리해준다.
- 빈즈의 상태를 메모리에서 사용여부에 따라 자동으로 활성/비활성화를 관리 해준다.
- 분산처리 기능을 지원
◎ 인스턴스 풀링
- Stateless Session Bean의 사용 방법
- EJB Container가 각 client별로 인스턴스를 미리(최소한의 개수 이상) 생성해 놓고
client의 요청이 들어오면 하나씩 주었다가 다시 회수받는 방식
- 메모리 절약 및 속도 개선 효과
- 대표적 예 : Connection pool
(pool에 Connection 객체를 여러개 생성해 놓고 사용자의 요청이 있을 때마다 하나씩 준다.
만약 미리 생성해 둔 객체를 다 사용했는데 또 요청이 들어온다면
회수되는 객체가 있을 때까지 대기시킨다.)
EJB의 단점
- 실행속도가 느리다는 것. 이는 분산환경을 지원하기 위해 객체를 직렬화하는 과정 때문이다.
- 복잡한 프로그래밍 모델
- 특정환경, 특정기술에 종속적인 코드
- 자동화된 테스트가 매우 어렵거나 불가능
POJO(Plain Old Java Object)
- 특정 프레임워크나 기술에 의존적이지 않은 자바 객체
- 특정 기술에 종속적이지 않기 때문에 생산성과 이식성 향상
경량 프레임워크의 등장
- EJB가 제공하는 서비스를 지원해 줄 수 있는 프레임워크의 등장
- Hibernate, JDO, iBatis(MyBatis), Spring