2013-06-18 2 views
2

다음과 같은 경우에 올바른 접근 방식을 결정할 때 귀하의 의견이 필요합니다.전자 상거래 응용 프로그램에서 제품 목록에 필터를 동적으로 적용하십시오.

현재 전자 상거래 응용 프로그램 (온라인 쇼핑 웹 사이트)을 작성 중입니다. 여기 응용 프로그램의 홈페이지에서 상점에서 사용할 수있는 제품 목록을 표시해야합니다.

최종 사용자는 필터를 적용한 제품 만 표시되도록 필터를 제품 목록에 적용 할 수있는 기능을 제공합니다 (선택한 회사, 가격 범위 등의 디스플레이 제품과 같은 필터).

그럼, 내 질문은 필터를 적용하기위한 논리에 관한 것입니다. 이 요구 사항을 구현하기 위해 다음과 같은 아이디어가 있습니다. 사용자가 페이지의 다른 CRITERIAS 선택 같이

  1. (필요한 절 문자열을 부가함으로써) 동적 SQL 쿼리를 생성하고 각 요청에 대해 생성 된 SQL 화재.

  2. 가능한 모든 SQL 조합을 데이터베이스에 이미 설정합니다 (저장 프로 시저에서). 사용자가 기준을 변경하면 실행할 저장 프로 시저에 적절한 SQL을 선택하십시오.

이 요구 사항을 처리하는 더 좋은 방법이 있다면 누구나 안내해주십시오. 모든 입력을 매우 쉽게 처리 할 수 ​​있습니다. 자세한 내용은이 컨텍스트에서 알려주십시오.

감사합니다.

+0

두 번째 옵션을 선택할 것입니다. 먼저 각 요청에 대해 SQL을 생성하지 않아도되므로 응용 프로그램의 속도가 향상됩니다. 그리고 두 번째로 그것은 SQL 삽입에 감염되기 쉽지 않다 ... –

+0

당신의 전자 상거래 어플리케이션은 jpa를 사용합니까? storeprocedures? 아니면 완전히 새로운 프로젝트입니까? – nachokk

+0

@nachokk : 새로운 프로젝트입니다. 나는 JPA에 대해 전혀 모른다. 유용할까요? 비즈니스 로직을 기반으로 결과 집합을 필터링하는 API를 제공합니까? – Shinchan

답변

0

첫 번째 작업을 수행 하겠지만 SQL 주입 공격에주의해야합니다.

스토어드 프로 시저가 일반적으로 자바보다 좋지 않은 언어로 작성되기 때문에 두 번째 옵션이 마음에 들지 않습니다. 그것은 순수한 의견이지만 그것은 제 의견입니다. 그들은 또한 데이터베이스에 의존하지 않습니다.

또는 JPA를 사용할 수 있습니다. 예를 들어, Hibernate Filters이 있습니다.

0

너 같은 사이트에서 잘 작동하는 것은 판매를 위해 제공 할 다른 항목을 검색하는 대신 검색어를 변경하지 않고 대신 모든 동일한 항목을 제공하지만 사이트에 표시되는 순서를 변경하는 것입니다.

사용자가 $ 100- $ 500의 품목을 원하면 해당 항목을 $ 100 및 $ 500 미만으로 표시하지만 그 범위의 항목이 먼저 표시되고 범위 밖의 항목이 임의의 순서로 표시됩니다. 또는 여러 기준이있는 경우 조건 중 하나를 제외한 모든 기준을 충족하는 항목을 표시 할 수 있습니다.

이렇게하면 500 달러가 넘는 커피 머그잔을 요구하는 사용자의 문제도 해결됩니다. 일치하는 항목이 없으면 사용자에게 선택할 0 개의 항목을 제공하지 않지만 모든 가격의 커피 잔 대신 다른 항목을 제공하십시오. 구매할 항목이없는 사용자에게 선물을 보일 수도 있습니다.

"주문자"조항을 변경하는 경우를 제외하고는 언급 한 두 가지 방법 중 하나로 구현할 수 있습니다.

개인적으로 저장 프로 시저를 사용하지 않는 것이 좋습니다.

그러나 데이터베이스 사용을 최적화하고 저장 프로 시저를 최상위 모양으로 유지할 수있는 그룹의 데이터베이스 사용 전문가가있는 대규모 그룹과 작업하는 경우 옵션 일 수 있습니다.

Java 개발자의 단일 팀 또는 소규모 팀이 Java 및 SQL/Database의 전문가가 될 것으로 기대하지 마십시오. 팀의 강점을 발휘하십시오.

관련 문제