■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                      2009年02月01日

    Java総合講座 - 初心者から達人へのパスポート
                  vol.138

                                セルゲイ・ランダウ
 バックナンバー: http://www.flsi.co.jp/Java_text/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


[このメールマガジンは、画面を最大化して見てください。]


========================================================
◆ 01.SOAPのアプリケーション(Webサービス)
========================================================


では、今回から、Webサービスの実装(H社側の開発作業)に入っていきましょう。


まず、H社はホテルですから、客室管理のためのデータベースを持っています。
ここでは、H社の客室管理に使用されるデータベースは次のようなものであると
しましょう。


■ データベース
[データベース名]:HOTELDB

■ テーブル

(1) 客室の情報を保持するテーブル
[テーブル名]:ROOMINFO
[カラム]:
 ROOMNUM(部屋番号、整数、プライマリー・キー(主キー))
 CAPACITY(定員、整数)
 RATE(料金(1泊1人当たり)、整数)
 TYPE(部屋の種類、文字列)
 WEB(Web(インターネット)閲覧の可否、文字(Y=可、N=不可))

(普通なら、部屋の種類は別のテーブルにして部屋の種類のコードを定義しておき、
上記のTYPEカラムにはこのコードを設定するでしょうけれど、ここでは単純化して
TYPEカラムに直接、部屋の種類の名前(文字列)を設定するものとします。)

(2) 予約情報を保持するテーブル
[テーブル名]:BOOKING
[カラム]:
 BOOKNUM(予約番号、整数、プライマリー・キー(主キー))
 CUSTNAME(顧客名、文字列)
 ADDRESS(住所、文字列)
 TELNO(電話番号、文字列)

(普通なら、顧客情報は別のテーブルにするでしょうけれど、ここでは単純化して
予約情報の中に含めることにします。また、顧客=予約者というふうに単純化して
おきます。)

(3) 客室の予約情報を保持するテーブル
[テーブル名]:ROOMBOOK
[カラム]:
 ROOMNUM(部屋番号、整数、プライマリー・キー(主キー)かつ外部キー)
 DATE(日付、DATE型、プライマリー・キー(主キー))
 BOOKNUM(予約番号、整数、外部キー)
 LODGNUM(宿泊人数、整数)



では、MySQLを使って、実際にデータベースとテーブルを作っていきましょう。


最初に、テーブルを作るために、以下のようなSQL文をファイルに
保管しましょう。

(1) [テーブル名]:ROOMINFO
--------------------------------------------------------
create table ROOMINFO (
ROOMNUM integer not null,
CAPACITY integer not null,
RATE integer not null,
TYPE varchar(100) not null,
WEB char(1) not null,
primary key(ROOMNUM)
);
--------------------------------------------------------
これは、C:\JavaWorksフォルダーの中に、
ROOMINFO.sql
というファイル名で保管することにしましょう。


(2) [テーブル名]:BOOKING
--------------------------------------------------------
create table BOOKING (
BOOKNUM integer not null,
CUSTNAME varchar(20) not null,
ADDRESS varchar(100) not null,
TELNO varchar(12) not null,
primary key(BOOKNUM)
);
--------------------------------------------------------
これも先ほどと同じフォルダーに
BOOKING.sql
というファイル名で保管しておきましょう。


(3) [テーブル名]:ROOMBOOK
--------------------------------------------------------
create table ROOMBOOK (
ROOMNUM integer not null,
DATE date not null,
BOOKNUM integer not null,
LODGNUM integer not null,
primary key(ROOMNUM,DATE),
foreign key(ROOMNUM) references ROOMINFO (ROOMNUM)  on delete cascade,
foreign key(BOOKNUM) references BOOKING (BOOKNUM)  on delete cascade
);
--------------------------------------------------------
これも先ほどと同じフォルダーに
ROOMBOOK.sql
というファイル名で保管しておきましょう。

では、これらのファイルをMySQLに読み込ませて実行することにしましょう。


まず、MySQLのコマンド・ライン・クライアントを起動します。
そのためには、パソコンの
「スタート」ボタン→「すべてのプログラム」→「MySQL」→
「MySQL Server 5.0」→「MySQL Command Line Client」
を選択します。

rootのパスワードを聞いてきますので、MySQLのインストール時に
設定した

rootpass

を入力しましょう。

そうすると、MySQLのプロンプト(mysql>)が表示されますね。

そこで、まず、データベースを作成するためのSQLコマンドを入力し
ましょう。

create database HOTELDB charset sjis;

というコマンドを入力してください。

続いて、このデータベースを使用するようにコマンドを送りま
しょう。

use HOTELDB

というふうに入力してください。


先ほどのSQLのファイルを読み込ませて実行させるために以下の
コマンドを入力します。

source C:\JavaWorks\ROOMINFO.sql
(sourceの代わりに\.を入力することもできます。)

source C:\JavaWorks\BOOKING.sql

source C:\JavaWorks\ROOMBOOK.sql


以上で、3つのテーブルができているはずです。確認してみましょう。
以下のコマンドを入力してみてください。

show tables;

テーブル名がリストされますので、3つのテーブルがすべてそろって
いるか確認してください。(以前もお話しましたが、Windows環境の
MySQLではデータベース名やテーブル名は大文字と小文字が区別され
ないので、さきほどのSQL文中で大文字で指定したテーブル名もここ
では小文字でリストされたりしますが、UNIXやLinuxではきちんと区別
されます。逆に、UNIXやLinux環境のMySQLでは、同じ綴りのテーブル名
でも、大文字で書いたテーブル名と小文字で書いたテーブル名は別の
テーブルとして扱われてしまうので、注意が必要です。)


ここで、MySQLのコマンド・ライン・クライアントを終了しておきま
しょう。

quit

と入力してください。



ところで、こういったWebサービスのように、インターネットを通じて全国の
(あるいは、もしかしたら世界中の)多くのユーザーからアクセスされる
可能性のあるアプリケーションには、迅速な処理能力が要求されます。

ここで従来よく問題になったのは、データベースへの接続時の負荷です。
データベースへの接続時にはコンピューターにかなりの負荷がかかるため、
あまり頻繁に接続・切断を繰り返すと、アプリケーションの処理能力が大幅
に落ちてしまいます。

そこで、一度データベースへの接続が行われたら、このデータベースへの接続
をプールする(データベースへの接続状態を溜めておく)ことによって、次の
アプリケーションの実行時には予めプールされている接続をそのまま使用する
ことによって、負荷を無くすという方法がとられるようになりました。

次回から、この接続をプールする方法を使ったWebサービスのプログラミング
を紹介していきます。


(次回に続く)


では、今日はここまでにします。



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
★ホームページ:
      http://www.flsi.co.jp/Java_text/
★このメールマガジンは
     「まぐまぐ(http://www.mag2.com)」
 を利用して発行しています。
★バックナンバーは
      http://www.flsi.co.jp/Java_text/
 にあります。
★このメールマガジンの登録/解除は下記Webページでできます。
      http://www.mag2.com/m/0000193915.html
★このメールマガジンへの質問は下記Webページにて受け付けて
 います。わからない所がありましたら、どしどしと質問をお寄
 せください。
      http://www.flsi.co.jp/Java_text/
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Copyright (C) 2009 Future Lifestyle Inc. 不許無断複製