2011-03-09 3 views
0

주제가 혼동을 줄 수 있습니다. 본질적으로, 나는 그 (것)들 사이 관계에 3 개의 "실재물"가있다. 엔터티 중 하나만 영구적으로 유지해야합니다 (서버 재시작 사이). 난 여전히 비 영구적 인 엔터티간에 DB 기능을 원한다. 예를 들어 쿼리.JPA- 혼합 엔티티 및 비 엔티티 클래스

이 문제를 처리하는 데 올바른 패턴이 무엇입니까?

메모리 내 DB에 대해 생각했지만 내 엔티티 중 하나가 지속적이어야 할 필요가 있기 때문에 비 지속 엔티티가 다른 지속성 단위가 될 수 있으므로 이것이 옵션이 아니라고 생각합니다.

또 다른 생각은 모든 것을 지속적으로 유지하면서 시스템을 다시 시작할 때 비 영구 테이블을 지우는 것입니다.

? 감사.

답변

1

두 개의 지속성 단위를 가질 수 있습니다. 하나는 디스크 데이터베이스이고 다른 하나는 인 메모리 데이터베이스입니다.

이 관계는 일시적이거나 A와 B에 외래 키를 저장할 필요가 있습니다. 두 가지 사이의 관계가 없거나 필요할 때 A 또는 B를 찾기 위해 쿼리를 수행하여 관계 지속되지 않는 영원한 엔티티에서는 이상하게 보입니다.

+0

나는 다른 PU를 사용하는 아이디어 + 메모리 DB에서, 그리고 다른 PU의 객체들 사이의 관계를 (직접적으로) 정의하지 않는 것이 합리적이라고 생각한다. –

0

이것은 실제로 JPA 관련 질문이 아닙니다. 그것은 당신이 사용하고있는 어떤 지속성 메커니즘에도 적용될 것입니다.

질문을 올바르게 읽으면 2 개의 비 지속 엔터티는 POJO 일 수 있으며 JPA 응용 프로그램에서는 지속성 단위로 살지 않을 수 있습니다.

당신은 관계를 설명하지 않으므로 이것은 약간의 추측입니다. 지속 된 엔티티가 다른 두 가지로 구성되어 있다면 다음과 같은 것을 가질 수 있습니다 :

@Entity 
@Table(name = "TABLE_NAME") 
public class PersistingEntity implements Serializable { 
    @Id 
    @Column(name = "ID") 
    private Long id; 

    ... 

    @Transient 
    A a = new A(); 

    @Transient 
    B b = new B(); 

    ... 
} 

여기서 A와 B는 비 지속 엔티티입니다.

+2

'a'와'b'는'@ Transient'로 표시되어야합니다. 그렇지 않으면 직렬화되어 바이트 배열로 유지됩니다. – CarlosZ

+0

@CarlosZ 감사합니다! 덕분에 –

+0

. 나는 그것들을 일시적으로 표시하면 그것들을 끈기에서 벗어나게 할 것이지만, 문제는 a와 b 필드가 관계에 참여하기를 원하며 나는 그것들에 대해 질의를 수행 할 수 있기를 원한다는 것이다. –

관련 문제