2010-04-06 3 views
0

표 A 및 B는 1을 가질 필요 : M 관계절전 1 : M 관계 행 순서 상수 값 테이블과 병행

A 및 B는 따라서 애플리케이션 런타임 동안 첨가되어 생성하고 4 B의 것을 말한다 만들어진. 각 B 인스턴스는 순서대로 제공되어야합니다. 나중에 을 추가 할 때와 동일한 순서로 추출 할 수 있습니다.

응용 프로그램은 Tomcat에서 실행되는 웹 응용 프로그램이므로 10 개의 인스턴스가 동시에 작동 할 수 있습니다.

그래서 내 질문은 : 나는 같은 순서에 참조가 내가 그들을 지속으로 B 인스턴스를 추출 할 수 있도록, 순서를 삽입 보존하는 방법

1). 그건 까다 롭습니다. 왜냐하면 우리가 컬렉션에 추가 한 다음 저장됩니다 (맞습니까?). 그래서, Hibernate가 그것을 저장하는 방법, 인스턴스를 추가 한 순서를 변경한다면 어떻게 될까? 관계를 묘사 할 때 SET 대신 LIST와 같은 것을 보았습니다. 내가 필요한 것은 무엇입니까?

2) B 테이블에 SEX (M, F, U)와 같은 인스턴스를 구별 할 수 있도록 3 차원 열을 B에 추가하는 방법. 특별한 테이블이 필요하거나, Hibernate에서 상수를 기술하는 쉬운 방법이 있는가? 추천 메뉴가 무엇인가요?

3) 동시성에 대해 이야기하면서 어떤 방법을 사용 하시겠습니까? db에 충돌이 없어야하며, 행이 삽입되지 않으면 (PK가 추가 된 경우) 쉽게 존재할 수 있습니다. 지연없이 호출됩니다.

답변

3

삽입 순서를 유지하는 방법, 내가 참조했던 B 인스턴스를 내가 유지 한 순서대로 추출 할 수 있도록. (...)

List과 같은 주문한 컬렉션을 사용하십시오. 리스트는 두 가지 방법으로 매핑 할 수 있습니다 : 주문 목록과 같은

  • , 순서는 데이터베이스 색인 목록 등
  • 에 구체화되지 않고, 순서는

참조 데이터베이스에 구체화 자세한 내용은 2.2.5.3.4. Indexed collections (List, Map) 섹션을 참조하십시오.

B 테이블에 SEX (M, F, U)와 같은 인스턴스를 구별 할 수 있도록 B에 제 3 열을 추가하는 방법. 특별한 테이블이 필요하거나, Hibernate에서 상수를 기술하는 쉬운 방법이 있는가? 추천 메뉴가 무엇인가요?

enum을 B에 사용하고 @Enumerated과 매핑하십시오. 이 previous answer을 참조하십시오.

동시성에 대해 이야기하면서 어떤 방법을 사용 하시겠습니까? db에 충돌이 없어야하며, 지연없이 호출되는 행이 삽입되지 않으면 (PK 추가) 쉽게 존재할 수 있습니다.

음 ... 사용자의 요구에 맞는 트랜잭션 및 잠금 전략을 사용합니다 (그러나 솔직히 말해서 나는 그 질문을 이해할 수 있을지 확신하지 못합니다).

+0

@Pascal Thivent 항상 전문적으로 답변 해 주셔서 감사합니다. 세 번째 질문은 PK가 동시에 반환되지 않기 때문에 객체가 메소드 호출에 저장되지 않는다는 것을 암시합니다. 문제가 발생할 수 있다고 생각했습니다. 그러나 진실되게 말하면 처음 두 가지 질문이 더 중요합니다. – EugeneP

+0

@EugeneP 당신을 진심으로 환영합니다. 3 번 문제에 관해서는 유감 스럽지만 여전히 당신의 우려를 이해하지 못합니다. 어쩌면 당신이 생각하고있는 정확한 시나리오를 분명히한다면, 나는 정교 할 수 있습니다. –