| JSP/サーブレット編 |
|
「準備済みSQL命令でデータベースアクセスを効率化する」でも紹介したとおり、準備済みSQL命令は、パラメータだけが異なる同一のSQL命令を繰り返し実行する場合には有効な手法です。しかし、準備済みSQL命令でも、1回目の実行に関しては通常のSQL命令と同様に「解析→コンパイル→実行」というステップを踏む必要があります。そのため、同一命令の繰り返しが行われないデータベースアクセスの場合は、必ずしも十分な効果をあげることができません。
そこで登場するのが、ストアドプロシージャです。ストアドプロシージャは、あらかじめ「データベースサーバ上に」用意されたSQL命令セットのことです。データベースサーバ上ですでに最適化されているので、実行に際してあらためて「解析→コンパイル」などの処理が発生することはありません。また、アプリケーションサーバとデータベースサーバとが別々のマシンの場合でも、パラメータの受け渡しだけで複雑なSQL命令がネットワーク上を行き来しないので、ネットワークによるボトルネックが発生する危険性を抑えることができます。
■解説
ストアドプロシージャは、CallableStatementクラスによって利用することができます。以下は、このCallableStatementクラスの使用例です。
| CallableSql.java |
package to.msn.wings; |
注意:使用しているデータベースサーバやバージョンによっては、CallableStatementクラス(ストアドプロシージャ)を利用できない場合もあるので注意してください。例えば、MySQL 4.0.xではストアドプロシージャの機能は提供されていません。
ストアドプロシージャInsertBookは、ISBNコード、書名、価格をパラメータとして受け取り、新規レコードを追加するためのものとします。ストアドプロシージャを呼び出す際は、以下のような構文を利用します。
{call ストアドプロシージャ名 (?,...)} |
全体を{call 〜}で囲み、ストアドプロシージャ名とパラメータの数だけプレイスホルダである“?”を列記します。もしも、出力パラメータが存在する場合は、以下のように記述することも可能です。
{?=call ストアドプロシージャ名 (?,...)} |
注意:サーブレットクラスの動作にはデプロイメント・ディスクリプタ(web.xml)への登録が必須です。web.xmlへの設定については、連載:基礎から学ぶサーブレット/JSP(11)「JSPとサーブレットの違いを明らかにする」を参照してください。
| 「Java TIPS」 |
TechTargetジャパン
Java Solution フォーラム 新着記事
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH
