문제

나는 EJB를 처음 접했고 SQL 개념을 EJB Entity Beans로 번역하는 데 주위를 두려고 노력하고 있습니다.

사람 (ID, 이름), 연락처 (PID, Phone_number)라는 두 개의 테이블이 있다고 가정합니다. 전화 번호가 있는지 여부에 관계없이 모든 사람의 목록을 얻으려면 EJB 세션 Bean에서 다음과 같은 JDBC를 통해 SQL 쿼리를 발행합니다.

SELECT PEOPLE.name, CONTACT.phone_number 
FROM PEOPLE 
LEFT JOIN CONTACT ON PEOPLE.id = CONTACT.pid

SQL/JDBC를 사용하는 대신 이제 EJB Entity Bean을 사용하고 싶습니다. 그래서 테이블에 해당하는 EJB3 엔티티 Bean 클래스를 만듭니다.

이제 세션 Bean의 두 엔티티 클래스에 액세스 할 수 있으며 더 이상 세션 Bean에서 SQL/JDBC를 통해 데이터베이스 테이블에 직접 액세스하고 싶지 않습니다. JPA의 엔티티 콩과 기능 만 사용하고 싶습니다. 세션 Bean에서 SQL 쿼리와 동일한 결과를 얻을 수 있도록 적절한 EJB 디자인은 무엇입니까?

EJB Entity Bean 클래스를 사용하여 SQL OUTER 조인 쿼리와 동일한 결과를 생성하는 방법에 대해 불분명합니다. 돕다.

도움이 되었습니까?

해결책

먼저 두 개의 JPA 엔티티를 만듭니다. People:

@Entity
@Table( name="PEOPLE" )
public class People {

    @Id @Column
    private Long id;

    @Column
    private String name;

    @OneToOne
    @JoinColumn( name="pid" )
    private Contact contact;

    // getters and setters
}

그리고 Contact:

@Entity
@Table( name="CONTACT" )
public class Contact {

    @Id @Column
    private Long pid;

    @Column
    private String phoneNumber;

    // getters and setters
}

그런 다음 JPQL을 사용하여 외부 조인 쿼리를 생성합니다.

SELECT p FROM People p LEFT JOIN p.contact c
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top