2011-03-01 3 views
2

'플렉스 필드'는 고객 사이트의 테이블을 변경하여 해당 테이블의 엔티티에 대한 사용자 정의 정보를 보관하기 위해 테이블에 추가 열을 추가하는 용어입니다. 누군가가 jpa, 특히 eclipselink를 사용하여이 메커니즘을 지원했는지 궁금합니다.JPA 및 데이터베이스 플렉스 필드

고객 지정 필드의 값을 기준으로 기본 행을 필터링하고 연관 테이블에 이러한 필드를 포함 시키면이 보조 테이블에 여러 개의 별칭 조인이 발생하므로이 작업을 수행하려고합니다.

명백한 접근법은 (최소한 나에게 있어서는) 엔티티 객체에 새 필드를 삽입 한 다음 동적 직조를 실행하는 측면을 정의하는 것입니다.

누구든지이 작업을 수행했는지 궁금 해서요. 내가보기에는 문제가 있거나 다른 접근법에 대한 제안이 있으면 궁금합니다.

+0

EclipseLink 메일 링리스트에서 질문 해 보셨습니까? –

답변

2

엔티티에 새 필드를 삽입하면 응용 프로그램에서 어떻게 사용합니까? 응용 프로그램/UI 코드도 변경 하시겠습니까?

가장 간단한 해결책은 일반적으로 Entity의 속성 맵을 갖는 것입니다. 이렇게하면 런타임에 새 속성을 추가 할 수 있으며 응용 프로그램/UI에서 이러한 속성에 액세스하고 쿼리하여 제시하고 허용 할 수 있습니다 편집 및 표시. ElementCollection 또는 OneToMany를 사용하여 속성을 속성 테이블에 매핑 할 수 있습니다.

더 복잡한 기존 테이블을 변경하려면 orm.xml을 편집하고 응용 프로그램을 재배포하거나 SessionCustomizer에 맵핑을 추가하거나 JPA 맵핑을 갱신해야합니다. DescriptorCustomizer. 또한 EclipseLink는 필드 또는 get/set 메소드 대신 속성에 열을 매핑 할 수있는 VIRTUAL AccessMode를 지원합니다.

더 강압적 인 방법은 개체 모델 코드와 응용 프로그램 코드를 업데이트하여 새 데이터를 사용하는 것입니다.

또한 EclipseLink는 클래스를 요구하지 않고 동적 엔티티를 테이블에 매핑하는보다 동적 인 솔루션을 제공합니다. 난은 EclipseLink가 확장 모델 (키 - 값 테이블 또는 플렉스 열)와 함께 사용할 수있는 방법을 보여줍니다 예를 구축하기 시작했습니다 http://wiki.eclipse.org/EclipseLink/Examples/JPA/Dynamic

+0

이 엔티티의 데이터는 그리드에 표시되고 표시되는 열은 사용자가 선택할 수 있으므로 데이터의 반입은 반영/맵을 기반으로합니다. 따라서 GUI 코드는 실제로 변경되지 않으며, 사용 가능한 필드가 무엇인지 알며 사용자에게 무엇을 표시할지에 대한 옵션을 제공합니다. – MeBigFatGuy

+0

우리는 이러한 추가 필드의 값을 기반으로 기본 행을 필터링하려고하므로 속성 테이블 경로를 원하지 않습니다.이 때문에 속성 테이블에서 여러 별칭 조인이 필요합니다. – MeBigFatGuy

+0

아, Dynamic Configuration Using API를 사용하는 것이 유망 해 보입니다.이 대답을 좋은 것으로 받아 들일 것입니다. 그래도 내 머리를 긁적, 감사합니다. – MeBigFatGuy

2

참조하십시오. 그것은 진행중인 작품입니다하지만 난 예를 들어, 위키 페이지에 더 많은 다이어그램 및 샘플 코드를 추가하기 시작했습니다 :이 또한 제임스는 위에서 언급 한 동적 지원을 사용하여 포함

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Extensible

.

+0

링크의 예는 키/값 연결 표의 필드를 표시합니다. 이것은 이전에 수행 한 작업이지만 키 값 할당 테이블의 값을 기반으로 기본 행을 필터링 할 수 있으므로 성능이 심각하다는 것을 알았습니다.그래서 우리는 이러한 필드를 기본 행으로 첫 번째 클래스 열로 이동하고자합니다. – MeBigFatGuy

+0

감사합니다. Doug! 이것은 나에게 정말 유용 할 수 있습니다! –

+0

확장 접근법에는 데이터베이스 저장을위한 2 가지 옵션이 포함됩니다. 값은 별도의 테이블을 사용하고 Flex는 기본 테이블에서 열을 사용합니다. 가치에는 성과와 질문이 있습니다. –