EJB 3.1 세션 Bean 작성 마법사를 사용하여 EJB 프로젝트에서
세션 Bean 및 JPA 엔티티를 작성할 수 있습니다.
프로시저
- EJB 프로젝트 작성을 위한 단계를 수행하십시오. 구성 필드 옆에 있는 수정을 클릭하십시오.
- 프로젝트 패싯 페이지에서 Java Persistence를 선택하고 확인을 클릭하십시오.
- 단계에 따라 JPA 패싯 페이지에 EJB 프로젝트를 작성하십시오.
- 플랫폼 필드에서 RAD
JPA 플랫폼을 선택하십시오.
- 연결 필드에서 연결을 선택하거나
연결 추가를 클릭하여 연결을 작성하십시오.
단계를 따라 원하는 데이터베이스 연결을 작성하십시오.
- 연결 시 기본 스키마 겹쳐쓰기를 선택하고
스키마 필드에서 대체 스키마를 선택하십시오.
기본 스키마를 사용하지 않으려면 완료를 클릭하십시오.
- EJB 프로젝트에서 세션 Bean 작성:
- Java™ EE 퍼스펙티브에서 프로젝트를 마우스 오른쪽 단추로 클릭한 후
을 선택하십시오. EJB 3.1 세션 Bean 작성 마법사가 표시됩니다.
- 소스 폴더 필드에서 새 Bean의
소스 폴더를 선택하십시오.
- Java 패키지 필드에서 새 Bean의 패키지 이름을
입력하십시오.
- Bean 이름 필드에서 엔터프라이즈 Bean에 지정할 이름을 입력하십시오.
관례상, Bean 이름은 대문자로 시작합니다.
참고: Bean 이름에 유니코드 문자를 사용할 수 있지만,
엔터프라이즈 Bean 패키지 및 엔터프라이즈 Bean과 연관된 클래스에서는 유니코드 문자를
지원하지 않습니다.
- 원격을 선택하여 원격 인터페이스를 추가하거나 로컬을 선택하여 로컬 인터페이스를 추가한 후
완료를 클릭하십시오.
- EJB 프로젝트에서 JPA 엔티티 작성:
- EJB 프로젝트를 마우스 오른쪽 단추로 클릭한 후 을 선택하십시오.
- 데이터베이스 연결 페이지에서 연결 및 스키마가 올바른지 확인하고 다음을 클릭하십시오.
- 소스 폴더 필드의 테이블을 이용한 엔티티 생성 페이지에
소스 폴더의 이름을 입력하거나 엔티티에 대한
Java 소스 파일을 포함하는 폴더의 경로를 찾으십시오.
- Java 패키지 필드에
엔티티에 대한 Java 패키지를 입력하거나 해당 패키지를 찾으십시오.
- 엔티티 클래스를 persistence.xml 파일과 동기화하려는 경우
persistence.xml로 클래스 동기화를 선택하십시오.
- 테이블 필드에서 엔티티를 작성할 테이블을 하나 이상 선택하고 완료를 클릭하십시오.
JPA 엔티티 클래스와 함께 Java 편집기가 열립니다.
- JPA 엔티티 클래스에 조회를 작성하십시오. Java 편집기에서
JPA 엔티티 클래스를 열고 데이터베이스에서 데이터를 검색하는 조회를 작성할 수 있습니다. 예를 들어, 엔티티 클래스에서의
두 가지 단순 조회는 다음과 같습니다.
@Entity
@NamedQueries({
@NamedQuery(name = "findBySalaryLessThan", query = "SELECT e FROM Employee e WHERE e.salary < :salary"),
@NamedQuery(name = "findBySalaryGreaterThan", query = "SELECT e FROM Employee e WHERE e.salary > :salary")
})
- 세션 Bean에서 JPA 엔티티를 사용하십시오. Stateless 세션 Bean에서
EntityManager 인젝션을 사용하여 JPA 엔티티에 작성된 조회를 실행할 수 있습니다. Java 편집기에서
세션 Bean 클래스를 열고 JPA 엔티티에 연결되는 EntityManager를 작성하십시오. 다음은 이전 단계에서
작성된 조회를 호출하는 예제입니다.
@Stateless
public class HumanResourcesBean implements HumanResources {
@PersistenceContext
private EntityManager emanager;
public HumanResourcesBean() {
}
public List<Employee> findBySalaryLessThan(double salary) {
Query query = emanager.createNamedQuery("findBySalaryLessThan");
query.setParameter("salary", BigDecimal.valueOf(salary));
@SuppressWarnings("unchecked")
List<Employee> result = query.getResultList();
return result;
}
public List<Employee> findBySalaryGreaterThan(double salary) {
Query query = emanager.createNamedQuery("findBySalaryGreaterThan");
query.setParameter("salary", BigDecimal.valueOf(salary));
@SuppressWarnings("unchecked")
List<Employee> result = query.getResultList();
return result;
}
}