2

次のケースで正しいアプローチを決定するには、あなたの意見が必要です。

現在、e コマース アプリケーション (オンライン ショッピング Web サイト) に取り組んでいます。ここでは、アプリケーションのホームページに、ショップで販売されている商品のリストを表示する必要があります。

エンド ユーザーには、適用されたフィルターを満たす製品のみが表示されるように、製品リストにフィルターを適用する機能があります (選択した会社、価格帯などで製品を表示するようなフィルター)。

それで、私の質問は、フィルターを適用するためのロジックに関するものです。この要件を実装するために、次のアイデアを念頭に置いています。

  1. ユーザーがページでさまざまな条件を選択すると、SQL クエリが動的に生成され (必要な where 句を含む文字列を追加することにより)、要求ごとに生成された SQL が起動されます。

  2. データベース内のSQLのすべての可能な組み合わせをすでに設定しています(ストアドプロシージャなど)。ユーザーが条件を変更したら、ストアド プロシージャで実行する適切な SQL を選択します。

この要件を処理するためのより良い方法があれば、誰でも私を案内してもらえますか? すべての入力は非常に高く評価されています。このコンテキストでさらに情報が必要な場合はお知らせください。

ありがとう。

4

2 に答える 2

0

私は最初の攻撃を行いますが、SQL インジェクション攻撃には注意する必要があります。

ストアド プロシージャは通常、Java よりも劣ると私が考える言語で書かれているため、2 番目のオプションは好きではありません。それは純粋な意見ですが、それが私の意見です。また、データベースに依存しません。

または、これに JPA を使用することもできます。たとえば、Hibernate Filtersがあります。

于 2013-06-18T17:43:59.797 に答える
0

あなたのサイトのようなサイトでうまく機能するのは、クエリを変更して販売用に提供するさまざまなアイテムを取得するのではなく、すべて同じアイテムを提供するが、サイトに表示される順序を変更することです。

したがって、ユーザーが 100 ドルから 500 ドルの商品を希望している場合でも、100 ドル未満の商品と 500 ドルを超える商品を表示しますが、その範囲内の商品が最初に表示され、次に範囲外の商品が何らかのランダムな順序で表示されます。または、複数の基準がある場合は、基準の 1 つを除くすべてを満たす項目を表示できます。

これにより、500 ドルを超えるマグカップを求めるユーザーの問題も解決されます。一致するものがない場合、ユーザーに選択するアイテムを 0 個与えるのではなく、任意の価格のコーヒー マグよりも優先して他のアイテムのいくつかをユーザーに与えます。ユーザーに購入するアイテムがないことを示すと、ユーザーが欲しいものを目にする可能性が失われます。

「order by」句を変更していることを除いて、言及した方法のいずれかでこれを実装できます。

私の個人的な好みは、ストアド プロシージャを使用しないことです。

ただし、データベースの使用を最適化し、ストアド プロシージャを最高の状態に保つことができるグループ内のデータベースの使用に関する専門家がいる大規模なグループと一緒に作業している場合は、それがオプションになる可能性があります。

Java 開発者が 1 人または小規模なチームである場合、彼らが Java および SQL/データベースの専門家であるとは期待しないでください。チームの強みを活かしてプレーしましょう。

于 2013-06-18T17:56:13.340 に答える