Java Server Pages (JSP) は、サーバー側からの迅速なプログラム開発を容易にするツールであり、広く普及しています。欠点がどれほど多くても、鈍い側面は依然として存在しますが、JSP は、特にデータベースの入出力操作やデータ処理において、Web プログラマーに多くのメリットを提供します。
JSP を介したデータベース アクセスには、多くのガイドは必要ありません。問題は、Web プログラムからのデータベース アクセスが従来のローカル OLAP システムからのデータベース アクセスよりも魅力的であることを開発者にどのように受け入れさせ、クリーンで簡潔なデータ アクセス方法が重要であるかを認識させるかです。この時点では、JSP は非常にうまく解決できます。
何ができるでしょうか?
データ量が多く、データ密度が高い Web プログラムを作成している場合、データベース アクセスにはどのような要件が必要ですか? JSP を使用している場合は、大量のサーバー側データを処理する必要があります。プログラムは、大量のデータ、多くのユーザー、またはその 2 つの組み合わせを必要とする場合があります。考慮すべき領域としては、パフォーマンスの最適化、検出可能性、ユーザーごとの複数のクエリの影響、クエリの複雑さ、単一セッションで大量のデータを処理する場合の高レベルの型変換などがあります。
これには大規模な処理が伴います。ただし、JSP は Java Database Connectivity API (JDBC) との互換性が高いため、これにうまく対処できます。 JDBC ドライバーを正しく使用している限り、JSP コードに JDBC を含めることができ、JDBC はデータベースのようなコマンドを実行するステートメントを渡すことができます。
始める
これは、一般的な抽象的な JSP プログラム実行システムです。推奨される JSP 設計パターンは Model-View-Controller (MVCModel-View-Controller) です。これは、サーバー プログラムに適した従来の 3 層システムのバリエーションです。 JSPのMVC設計パターンにおいて、Modelはプログラムのロジックやデータを指し、Viewは閲覧を指し、Controllerはリクエスト処理を指します。
JSP プログラムを設計するときは、クライアントとサーバーの対話の間の最初のステップであるページを作成することが最善です。たとえば、一般的なプログラムでは、データ交換の特定のステップごとにページが存在します。つまり、データ入力ページ、検証要求ページ、データベース応答ページ、およびこれらのページのサブページ (変更記録ページ、記録された削除ページ) です。ページなど)。
JDBC をすべてのページに埋め込んで、要求されたデータベース操作を完了できます。ただし、プログラム全体が JSP と JDBC-JDBC が SQL ベースのものが混在するため、この操作には大きなリスクも伴います。これは、SQL が JDBC でカプセル化されており、JDBC も JSP でカプセル化されていることを意味します。これだけで目がくらむのに十分です。このアプローチを選択すると、必要な機能が得られますが、プログラム ロジックとデータベース アクセス コードの関係が明確になるように特に注意してください。
埋め込みJDBC
JDBC API はデータベースと直接通信しません。実際の接続は、販売者の Web サイトからダウンロードできるドライバーによって行われます。さらに、JDBC ドライバーには 4 つのタイプがあります。JDBC を使用する場合は、ニーズに最も適したタイプを正しく選択する必要があります。 DriverManager クラスを使用して、ドライバーベースの接続を処理します。
getConnection という DriverManager メソッドを使用して、データベース接続を確立できます。 URL パラメータを使用してデータベースを識別することもできます。
public static Connection getConnection(jdbc:odbc:nameOfDatabase)
次に、DriverManager にドライバについて伝えます (クラスパスにある必要があります):
Class.forName("sun.jdbc. odbc.nameOfJDBCDriver) ”);
データベースを JSP プログラムに接続しましたが、まだデータベース コマンドを実行できません。これを解決するには、JSP コードでステートメントを生成し、次のようなデータベース コマンドを確立します。
public Statement createStatement(intresultSetType, intresultSetConcurrency)
パラメーターを使用すると、データベース クエリから取得される結果を制御できます。最初のパラメータを使用する場合は、プログラム内で結果を確認できます。2 番目のパラメータを使用する場合は、クエリを通じて値を更新できます (これは将来の記事で詳しく説明する価値のある素晴らしい機能です)。
表 A は、次の 2 つの方法を列挙する複雑さを示しています。
ステートメントは SQL コマンドです。 PreparedStatement は SQL ステートメントであり、パラメータを通じてプログラムのプロセスを制御できます。 CallableStatement は、SQL ストアド プロシージャにアクセスするために使用されます。これらの指示を見ないと、これらの記述が複雑になることに気づき始めていますか? rollback メソッドを呼び出すと、トランザクション処理を元に戻すことができることに注意してください。
これらのデータベース アクセス メソッドをすべて使用したい場合、不足しているのは
ResultSetexecuteQuery(string sqlQuery)
だけです。
(executeQuery を使用して上記のプロセスを完了できます。また、executeUpdate を使用して更新、挿入、削除を完了することもできます)。上記の宣言インターフェイスを使用すると、さまざまなメソッドを使用して SQL 宣言を実行できます。 ResultSet はクエリから取得したデータにアクセスするだけなので、このデータを JSP プログラムで使用できます。
JSP プログラムを機能的に明らかな単一のページに分割し、任意のページで単一のデータベース操作を実行することで、データベース操作を大幅に簡素化し、これらのページの JDBC に SQL を埋め込んだ場合でも、将来のプログラム開発に使用できるページを作成できます。 。
しかし、JSP データベースへのアクセスをクリーンにして保守しやすくするためにできることは他にもあります。 JDBC を JSP コードに埋め込み、SQL コマンドを送信してデータベースと通信することは、適切なプロセスです。ただし、コードを複雑にすることなく、インターフェイスを介して SQL コマンド用のプログラムを構築する必要があります。 SQL 処理の柔軟性を高める必要がある場合は、データベース インターフェイス コードをさらに分離して、JSP プログラムをクリーンにすることができます。次の記事では、これらのプロセスを実装する方法について説明します。