2012-01-18 1 views
1

누구나 SQL 구문 분석기를 Java에 사용할 수있는 좋은 구현 예 또는 사용 시나리오를 제안 할 수 있습니까?검색 시나리오 용 Java 용 SQL 구문 분석기 사용

1)이이 이상적인 해결책이 될 수 :

나는 우리가 특정 매개 변수를 기반으로 UI에 표시되는 데이터를 필터링해야하는 응용 프로그램이, 나는이에 대한 몇 가지 의심이 등 을 기준으로 정렬 ?

2) UI가 Java 계층에 쿼리를 제공하는 역할을 어떻게 수행 할 수 있습니까?

답변

1

Java 응용 프로그램에서 sql 쿼리를 동적으로 생성 한 다음이 sql을 사용하여 데이터를 가져 오시겠습니까? 의는이 같은 SQL 있다고 가정 해 봅시다 : 사용자 후

select salary from emp where dept='sales' 

은 연령> (40)로, UI에서 다른 필터를 선택을, 다음 SQL은 다음과 같이 될 것입니다 : 물론

select salary from emp where dept='sales' and age > 40 

, 당신은 어쩌면 더 복잡한 필터를 추가하거나 정렬 절을 추가하려고 할 수도 있습니다.

이 작업을 수행하려면 SQL Parser이 유용합니다. Java SQL Parser를 기반으로 Deconstruct, Modify, Rebuild a SQL statement을 사용하는 방법을 보여주는 데모가 있습니다.

+0

내 usecase는 데이터에 대한 사용자 필터를 기반으로하는 것과 비슷합니다. UI는 여러 요청 params를 보내지 않고 일부 select 식을 만들어야합니다. For.eg http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API_Select.html 'field1 = 'abc'및 field2 = 'cde'orderby field1 desc limit 10,20' 과 같은 표현식이 UI에서 java API로 전달되도록 'select field1, field2 from field2 ='와 같은 선택식이 될 것입니다. Java API에서 해당 select 식을 구문 분석하여 해당 매개 변수를 가져 와서 DB에 전달할 동적 SQL 문자열을 만들길 원합니다. 무엇을 제안하나요? – schhajed

+0

그런 동적 인 sql을 만들 필요가 : mydomain에서 field1 = '@ p1'및 field2 = '@ p2'orderby field1 desc limit 10,20 매개 변수로 리터럴을 대체하는 등의 선택이 필요합니까? –

0

SQL 구문 분석기가 무엇을해야할지 모르겠습니다. 응용 프로그램은 SQL을 구문 분석 할 필요가 없습니다. Thay는 SQL 쿼리를 실행해야하므로 잠재적으로 SQL 쿼리를 동적으로 생성해야합니다. 그러나 응용 프로그램이 아닌 SQL을 구문 분석하는 데이터베이스입니다.

UI는 일반적으로 서비스 계층에 쿼리를 제공하지 않습니다. UI는 데이터가 유지되는 방식과 실행할 쿼리를 알 필요가 없습니다. 그것의 책임이 아닙니다. UI는 Filter 또는 Criteria 객체를 서비스 계층으로 전달하여 필터 또는 조건을 SQL 쿼리로 변환하고, 쿼리를 실행하고, 결과를 Java 객체로 변환하고, 이러한 객체를 표시하는 UI로 반환합니다.

+0

[jsqlparser] (http://jsqlparser.sourceforge.net/home.php) 및 [zql] (http://zql.sourceforge.net/)과 관련된 내용을 말하고 있습니다. 예를 들어 알 수 있습니다. 그 구현? – schhajed

+0

왜 SQL을 구문 분석 하시겠습니까? 귀하의 질문에 당신이 데이터를 필터링하려는 말합니다. 이를 위해 SQL 구문 분석기가 필요하지 않습니까? 데이터를 데이터베이스에 저장하고 SQL 쿼리를 사용하여 필터링하십시오. SQL 구문 분석기는 데이터베이스를 구현 *하고자 할 때 유용합니다. 데이터베이스를 사용하고 싶습니다. –