380 likes | 525 Views
chapter 07 : CMP 2.0. 학습목표. CMP 2.0 개요 EJB-QL select 메소드. EntityBean 개요. CMP 작업 순서 탐색기에 작업 디렉토리 생성 소스파일 작성 ( 2 개의 interface, 1 개의 빈 클래스 ) 컴파일 작업 설정파일 ( xml 파일 ) 작성 jar 파일로 압축 클라이언트 컴파일용 jar 파일 작성 클라이언트 소스파일 작성 컴파일 배치 ( Deployment ) 실행.
E N D
chapter 07 : CMP 2.0
학습목표 • CMP 2.0 개요 • EJB-QL • select 메소드
EntityBean 개요 • CMP 작업 순서 • 탐색기에 작업 디렉토리 생성 • 소스파일 작성 ( 2개의 interface, 1개의 빈 클래스) • 컴파일 작업 • 설정파일 ( xml 파일 ) 작성 • jar 파일로 압축 • 클라이언트 컴파일용 jar 파일 작성 • 클라이언트 소스파일 작성 • 컴파일 • 배치 ( Deployment ) • 실행
EntityBean 개요 - CMP • spec. • Home Interface에는 반드시 findByPrimaryKey( String pk) • 메소드가 필요하다. • 선언만 하고 빈클래스에서 구현할 필요가 없다. • 빈 클래스에서는 가상 지속성 필드를 선언해야 한다. • ( setter , getter 메소드를 추상메소드로 선언해야 한다. ) • 빈의 클래스를 추상클래스로 선언한다. • 테이블 생성 및 SQL 작업은 빈클래스가 아닌 builder 툴에서 • 작업한다.
소스 파일 작성 • 작성 방법 • 2 개의 인터페이스를 작성한다. • EntityBean을 구현한 1 개의 클래스를 작성한다. • 인터페이스 작성 • Home Interface • javax.ejb.EJBHome 인터페이스를 상속받는다. • 빈의 생성/소멸/검색 작업관련. • Component Interface • javax.ejb.EJBObject 인터페이스를 상속받는다. • 비즈니스 메소드 작업관련. • 빈 클래스 작성 • javax.ejb.EntityBean 인터페이스를 구현한다. • Home Interface 선언된 추상 메소드를 구현한다. • Component Interface 선언된 추상 메소드를 구현한다.
: 빈의 생성 , 검색 , 삭제 관련 작업 <<EJBHome>> <<Home Interface>> : 빈의 비즈니스 로직 관련 작업 <<EJBObject>> : Home Interface 메소드 구현. Component Interface 메소드 구현. SessionBean Interface 메소드 구현. <<Component Interface>> <<EntityBean>> UserBean • 소스 파일 작성
<<EJBHome>> <<AppUserHome>> • 빈 생성 실습 예제 : 빈의 비즈니스 로직 관련 작업 <<EJBObject>> <<AppUser>> <<EntityBean>> AppUserEJB : EntityBean 인터페이스 callback 메소드 구현
빈 생성 실습 예제 • 소스 작성
빈 생성 실습 예제 • 컴파일 • 설정파일( xml파일 ) 작성
빈 생성 실습 예제 BMP 용 EJB-QL 에서 사용.
빈 생성 실습 예제 • Jar 파일 작성 • 클라이언트 실행
빈 삭제 실습 예제 • 소스 작성
빈 삭제 실습 예제 • 설정파일 ( xml 파일 )작성 • Jar 파일 작성 • 서버실행 과 클라이언트 실행
빈수정() EntityBean UPDATE 빈수정() ejbStore() Client DB ejbLoad() SELECT • 빈 수정 실습 예제 • 동기화 ( Synchronization ) • 엔티티빈의 멤버변수 값과 데이터베이스의 레코드 값이 • 항상 일치되어야 한다. • ejbLoad 메소드와 ejbStore 메소드가 동기화 작업을 자동 • 으로 설정한다.
빈 수정 실습 예제 • 소스 작성
빈 수정 실습 예제 • 설정파일 ( xml 파일 ) 작성 • Jar 파일 작성 • 서버 실행 및 클라이언트 실행
빈 검색 실습 예제 • spec • Home Interface 에서 findXXX( args ) 이용한다. • finder 메소드는 빈 클래스에서 구현하지 않는다. • builder 툴에서 EJB-QL 를 이용하여 작성한다. • EJB-QL에서 사용하는 테이블 이름은 • Abstract Schema name 을 이용한다. • single finder • 검색 결과가 하나의 레코드인 경우 • 예> findByPrimaryKey( pk ) • multiple finder • 검색 결과가 여러 개의 레코드인 경우 • 예> findByAll() , findByName( name ) , findByAllName()
EJB-QL • 특징 • SQL문은 DBMS 마다 종속적이다. • ( 각 vendor 마다 확장된 기능의 SQL 지원 ) • EJB-QL 은 DBMS에 독립적이다. • EJB-QL은 특정 DBMS에 최적화된 SQL문 지원이 어렵다. • 기본 문법 • SELECT OBJECT ( o ) FROM 추상스키마이름 As o • SELECT OBJECT ( o ) FROM 추상스키마이름 o • SELECT OBJECT (o) FROM 추상스키마이름 o WHERE • o.name = ?1 • SELECT o.pass FROM 추상스키마이름 As o WHERE • o.name = ?1 AND o.id = ?2
빈 검색 실습 예제 – single finder • 소스 작성 과 컴파일 • 설정파일( xml 파일 ) 작성
빈 검색 실습 예제 • Jar 파일 작성 • 클라이언트 작성
빈 검색 실습 예제 • 실행
빈 검색 실습 예제 – multiple finder • 소스 작성 • 설정파일( xml 파일 ) 작성
빈 검색 실습 예제 • Jar 파일 작성 • 클라이언트 작성
빈 검색 실습 예제 • 실행
select 메소드 실습 예제 • 특징 • 빈 클래스에서 ejbSelectXXX( args ) 이름으로 추상 메소드로 선언한다. • 예> ejbSelectName( String key ) • 반드시 FinderException 을 선언한다. • builder 툴에서 EJB-QL 을 이용하여 작성한다. • select 메소드 사용은 Home 메소드 또는 Component 메소드에서 사용한다.
select 메소드 실습 예제 • 실습
select 메소드 실습 예제 • 설정파일( xml 파일 ) 작성 • 클라이언트 작성
Home 메소드 실습 예제 • 실행
공부한 내용 • CMP 2.0 • EJB-QL 사용법