EJB를 사용하면 애플리케이션 작성을 쉽게할 수 있다.
트랜잭션, 상태관리, 멀티쓰레딩, 리소스 풀링과 같은 Low Level 관리를 직접할 필요가 없다. WAS단에서 자동 관리가 되는 것이 장점이다.
WAS(Web Application Server)
동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 (DB조회, 로직처리가 요구되는 컨텐츠) JSP,Servlet 구동 환경 제공
하지만 현실 반영이 어렵다. EJB는 인터페이스 2개를 클래스에서 implement하고 그것을 jar로 묶어서 WAS에 deploy한다. 수정반영 과정이 복잡해서 개발의 효율성이 떨어지고, 어플리케이션 테스트를 위해 EJB서버가 필요하다. (톰캣같은 서버로 안됨, 종속 서비스)
EJB는 스펙에 정의된 인터페이스대로 코드를 작성하기 때문에 POJO를 그대로 사용하지 못한다. 또한 컨테이너 배로를 해야 테스트가 가능하기 때문에 개발 속도가 저하되고 RMI를 기반으로 하는 서버이므로 무거운 Container이다.
Container
Container 서비스를 생성하고 관리하는 메모리 영역
Servlet Container, Spring Container
위 책에서 Rod Johnson이 EJB를 사용하지 않고 엔터프라이즈 어플리케이션을 개발하는 방법을 소개했다. 이것이 스프링의 모태가 된다.
AOP나 DI같은 새로운 프로그래밍 방법론으로 개발이 가능하게 되었고, POJO로 프로그래밍 모델이 가능해졌다.
점차 POJO + 경량 프레임위크를 사용하기 시작했다.
POJO(Plain Old Java Object)
POJO는 간단한 자바 객체를 의미한다. 즉, 프레임워크에 종속된 무거운 객체가 아닌 의존적이지 않은 자바 객체
종속적이지 않기 때문에 생산성 이식성이 향상
경량 프레임워크
EJB가 제공하던 서비스를 지원해줄 수 있는 프레임워크의 등장
MyBatis, Spring, JDO, Hibernate
장점은
1. EJB서버와 같은 거창한 컨테이너가 필요 없음.
2. 오픈소스 -> 무료
3. 많은 라이브러리 지원
4. 스프링 프레임워크는 모든 플랫폼에서 사용 가능.
5. 스프링은 웹 뿐만 아니라 어플리케이션 등 모든 분야에 적용 가능한 라이브러리를 가지고 있음.