2011-08-13 3 views
0

열 ID와 부모가있는 테이블 메뉴가 있습니다. 데이터베이스에서 계층 적 데이터를로드하는 데 일반 JDBC (ORM 없음)를 사용할 수 있습니까? 모든 데이터베이스에 대해 일반적인 솔루션을 사용할 수 있습니까?JDBC를 통해 계층 적 데이터에 액세스

+0

어떤 데이터베이스입니까? 계층 구조가 포함 된 SQL 쿼리에 대한 지원은 데이터베이스마다 다릅니다. –

+3

확실히 할 수 있습니다. ORM 인수는 인수가 아닙니다. ORM은 커버 아래에서 "일반 JDBC"를 사용합니다. 건설적이고 기술적 인 프로그래밍 질문이 있으십니까? – BalusC

+0

현재 내 응용 프로그램은 여러 종류의 데이터베이스를 지원합니다. MySql, Oracle, PostgreSql 및 SQL 서버는 기본 데이터베이스입니다 – Barcelona

답변

0

데이터가 관계형 데이터베이스에 있고 스키마가 계층 적 방식으로이를 나타내는 경우 JDBC는 적절한 쿼리를 작성할 수 있다고 가정하고이를 추출 할 수 있습니다.

나는 일반적인 것에 대해 두려워합니다. 이러한 쿼리를 작성하고 결과를 객체 또는 데이터 구조에로드 한 다음 UI에 전달하여 렌더링해야합니다.

+0

이 링크가이 문제를 해결하는 데 도움이 될 수 있다고 생각합니다. http://www.patentgenius.com/image/6845376-6.html – Barcelona

2

먼저, design your database tables to store hierarchies. 두 번째로 recursive CTEs (Common Table Expressions)을 사용하여 계층 적 데이터를 가져옵니다. 데이터베이스 테이블의 구조와 사용 된 쿼리에 대한 더 이상의 정보가 없으면보다 구체적인 대답을 내릴 수 있다고 생각하지 않습니다.

재귀 CTE가 SQL99 사양의 일부인 경우에도 결국 데이터베이스에서 사용되는 쿼리가 다를 수 있습니다 (데이터베이스간에 재귀 CTE 지원을 확인하지 않았습니다). 따라서 일반 SQL 쿼리가 없을 수도 있지만 확실하게 채택 할 수있는 일반적인 접근 방식이 있습니다.

+0

제네릭이란 일반적인 제네릭이 아니라 일반 SQL 쿼리입니다. 이것을 해결하는 알고리즘입니다. 도와 줘서 고맙습니다. Vineet :) – Barcelona

+1

CTE를 읽어보십시오. 데이터베이스가 작업을 수행 할 수있는 경우 알고리즘이 필요하지 않습니다. CTE에 적합한 데이터베이스 모델 만 있으면됩니다. –