나는 비교적 Hibernate에 익숙하지 않고 상대적으로 단순한 기존 데이터베이스를 Hibernate에서 사용할 수있는 것으로 마이그레이션하려고 시도하고 있으며, 내 애플리케이션을 구조화하는 방법에 대한 조언을 찾고있다.Hibernate 다형성에서의 쿼리
나는 3 개 개체의 유형이 있습니다
- 항목
- 카테고리
- PropertyType
항목 및 종류와 PropertyType 모두 비슷를; 그들은 둘 다 등 이름, 설명, 만든 날짜를 가지고 있지만 각각 추가로 별도의 기능이 있습니다
- 항목 구체적인 위치가 (URL)
- 카테고리 항목 및/또는 카테고리의 세트를 포함하고,에서를 카테고리와 아이템 사이의 다 대다 연관, 그리고 상위 카테고리에서 하위 카테고리까지의 인접리스트.
- PropertyType은, 항목, 카테고리, 또는 다른 PropertyTypes 지금 내가 항목 및 카테고리는 별도의 테이블에 정의되어있다
와 관련된 키/값 필드의 속성 테이블에서 사용하기위한 메타 데이터의 열쇠입니다 하지만 Item과 Category가 서브 클래스 인 추상 Node 엔티티 클래스를 만드는 것이 현명한 것인지 궁금합니다. PropertyType은 충분히 다르기 때문에 자체 테이블에 있어야합니다. (PropertyType이 다른 PropertyType에 적용되는 3 개의 항목 만 있고 PropertyType이 항상 노드에 적용되도록 작업을 쉽게 만드는 경우 제거 할 수 있습니다.)
현재 내 속성 테이블에는 PropertyTypeId, ID (속성이 적용되는 Item, Category 또는 PropertyType의 ID), id_context (이전 필드의 식별자 : 0 = Item, 1 = Category, 2 = PropertyType) 및 값 (임의의 문자열)입니다.
구체적인 질문 :
나는, 기존 테이블 구조 (예를 들어, 항목 및 카테고리를 다른 테이블을 가지고)을 유지하는 방법을 내가 속성 유형을 결정하는 id_context 판별를 사용하여 최대 절전 모드 알 수 있습니까 원하는 경우? Item/Category/PropertyType을 공통 조상의 서브 클래스로 만들어야하므로 주어진 PropertyType과 연결된 Property 객체를 얻을 때 Item 또는 Category가 포함 된 목록을 반환 할 수 있습니까?
최대 절전 모드를 사용해야합니까? 내가 원하는 것을하기 위해 SQL 질의를 만드는 방법을 알고있다. 나는 그저 Hibernate를 감싸는 방법을 생각하는 데 어려움을 겪고있다.
원하는 쿼리를 수행하기 위해 최대 절전 모드로 전환하려면 어떻게해야합니까? 예 : 만약 PropertyType이 258이고, Category 객체 (id_context = 2)에 적용되는 Property 레코드를 반환하기를 원한다면 SQL (SELECT * FROM Property = 258 및 id_context = 2)에서 수행하는 방법을 알고 있지만 그렇지 않습니다. 어떻게 최대 절전 모드에서 그렇게 할 수 있는지.
가 있습니까 : 최대 절전 모드가 도움이 될 수 제공하는 다양한 기능이 있습니다 Hibernate XML 맵핑 파일이나 주석을 사용할 계획이십니까? –
은 주석을 선호하지만 XML을 고려할 것입니다. –