0

Jquery データテーブル プラグインは、非常に大きなデータ セット (サーバー側処理を使用する数百万行) のページネーション、並べ替え、および検索をユーザーに提供したい単純な読み取り専用アプリケーションに非常に役立つことがわかりました。

このコードを再利用するためのシステムがありますが、同じことを何度も繰り返してしまいます。テーブルで使用されるデータを取得するために必要な sql を構成するだけでよい、非常に一般化された API を作成したいと思います。これを行うための優れた設計パターン/アプローチを探しています。私はこのhttp://www.codeproject.com/Articles/359750/jQuery-DataTables-in-Java-Web-Applicationsのような記事を見て、サーバー側の処理がどのように機能するかを完全に理解しています (Java でそれを行い、 asp.net を何度も)。誰かが答えるには、Java でサーバー側の処理がどのように機能するかを深く理解している必要がありますが、これを実行しようとすると発生する問題がいくつかあります。

  • 通常、3 つの個別のクエリを実行します。検索句を含まないカウント、句を含むカウント、実際のデータのクエリ。3 つすべてを一度に実行する効率的な方法が見つかりませんでした。これを行うには、db から返される余分なデータが大量に必要になります (つまり、何度もカウントされます)。API は、これら 3 つの異なるクエリと複雑なクエリに基づく動作をサポートする必要があります。私は通常、ページネーションが大きなデータで比較的高速になるように、インデックスよりも行番号 () を使用します。

*where 句は動的に変更されます (ユーザーは可変数の行を検索できます)。

* order by 句は同じ理由で変更されます。

  • 全体として、それぞれのケースは、多くの場合、必要なデータにかなり固有のものです。サーバー側でプラグインを使用したいときに最小限の作業を行えるように、これを抽象化する良い方法はありますか?

したがって、ほとんどのプロジェクトでの手順は次のとおりです。 *プラグオンがサーバーに送信するパラメーターを抽出します (多くの場合、私自身が追加され、主に日付範囲) *フィルター処理されていないカウント クエリを作成します (これはめったに動的ではありません)。*フィルタリングされたカウント クエリを作成します (動的です) *データ クエリを作成します *テーブルのモデル オブジェクトを作成し、それを json として返します。

多くの問題は、可変数のパラメーターを使用して準備済みステートメントを設定すると発生します。一般的な方法で動的にSQLを生成する(たとえば、列名のみに基づく)可能性は低いようです。他の誰かがこれに使用しているものを作成したのか、それとも特定のパターンが適用できるように聞こえるのか疑問に思っています。再利用可能なフィルターを作成すると、Java で役立つ可能性があることに気付きました。アドバイスをいただければ幸いです。アーキテクチャは私が理解しようとしているものなので、言語にとらわれないでください。

4

1 に答える 1

1

DataTables に関連するすべてのリクエスト パラメータがクラス プロパティ (フィールド) にマップされるベース検索基準と、ベースを拡張し、sutom 検索用のビジネス ロジック フィールドに固有のカスタム検索基準クラスがあります。また、サーバー側には、カスタム検索条件を引数として取り、データベースにクエリを実行するリポジトリ クラスがあります。

C# に精通している場合は、カスタム バインディング コード使用例を確認できます。

このようなカスタム バインディングを Java コードでも行うことができます。

于 2013-03-18T09:23:07.427 に答える