TopLinkによるJavaオブジェクトのデータベース表へ のマッピング

このレッスンでは、TopLink Mapping Editorを使用して、通常のJavaオブジェクトを単純な3層アプリケーションのデータベース表にマッピングする方法を説明します。

トピック

このレッスンの内容は次のとおりです。

概要
前提 条件
TopLink のマッピング・プロジェクトの作成

Javaクラスの追加および TopLinkディスクリプタの作成

ディ スクリプタとデータベース表との対応付け
フィー ルドへのダイレクト・マッピングの実装

オブジェクト間の1対1マッピ ングの作成

オ ブジェクト間の1対多マッピングの作成
TopLink Employeeアプリケーションのデプロイ
まと め

約1時間

このアイコンの 上にカーソルを置くと、すべてのスクリーンショットが表示されます。 各手順に関連するスクリーンショットのみを表示する場合は、それぞれの手順のアイコンの上にカーソルを置いてください。


概要

このレッスンを修了すると、Javaクラスのデータをリレー ショナル・データベースに格納し、Javaクラスから現行のデータベース情報へアクセスできるようになります。 このシステムのオブジェクト・モデルを次の図に示します。

トピック・リス トに戻る

ここでは、各従業員の名前、住所、電話番号などの従業員デー タを追跡するアプリケーションを作成します。

前提条件

トピック・リス トに戻る

このレッスンを始める前に、次のことを実行しておく必要があります。

1.

Oracle JDeveloper 10gを インストールします。

 

2.

このレッスン用のサンプル表およびクラスをインストールしま す。 introductory.zipをハード・ ドライブへコピーし、ファイルを解凍します。

 

3.

SQLPlusを使用して、Oracle8i以上のリリースのデータベースへ接続し、introductory.sqlスクリプトを実行します。 このスクリプトにより、tltutorialという名 前のユーザーが作成され、表がtltutorialス キーマに移入されます。

 

4.

JDeveloperで、tltutorialユー ザー用のデータベース接続を作成しま す。 JDeveloperでのデータベース接続の作成方法の詳細は、オンラインデモ:DB開発を 参照してください。 ただし、作成する接続名はtltutorialと し、ユーザー名とパスワードにtltutorialを 指定します。

 

 

TopLink のマッピング・プロジェクトの作成

トピック・リス トに戻る

TopLinkマッピングは、JDeveloperのワーク スペースおよびプロジェクトに格納されます。 プロジェクトには、TopLinkのマッピングのデプロイメント・ディスクリプタを1つ設定できます。

1.

JDeveloperで、新しいワークスペースとプロジェク トを作成します。
「ファイル」メニューから「新規」を選択します。

Move your mouse over this icon to see the image

「新規ギャラリ」ページが表示されます。

 

2.

「カテゴリ」ペインで、「General」を選択します。 「項目」ペインで「ワー クスペース」を選択し、「OK」をクリックします。

Move your mouse over this icon to see the image

「ワークスペース作成」ダイアログ ボックスが表示されます。

 

3.

「ワークスペース作成」ダイアログ ボックスで、ワークスペース名としてTopLinkTutorialsを 入力し、「OK」をクリックします。

Move your mouse over this icon to see the image

「プロジェクトの作成」ダイアログ ボックスが表示されます。

 

4.

「プロジェクトの作成」ダイアログ ボックスで、プロジェクト名としてEmployeeを 入力し、「OK」をクリックします。

Move your mouse over this icon to see the image

ワークスペースおよびプロジェクトがナビゲータに追加されます。

 

5.

アプリケーション・ナビゲータで「Employee」を右クリックし、「新 規」を選択します。

Move your mouse over this icon to see the image

「新規ギャラリ」ページが表示されます。

 

6.

「フィルタ方法」ドロップダウン・リストで、「すべてのテクノロジ」を選択しま す。
「カテゴリ」ペインで、「General」→「Deployment Descriptors」を選択します。
「項目」ペインで、「TopLink Mappingディスクリプタ」を選択し「OK」をクリックします。

Move your mouse over this icon to see the image

TopLink Mappingsの要素がナビゲータに表示されます。

 

7.

TopLink Mappings」を右クリックし、「デフォルトのマッ ピング」を選択します。

Move your mouse over this icon to see the image

「TopLink Mappings」ページが、マッピング・エディタに表示され、「構造」ウィンドウも表示されます。

 

8. 「ファイル」メニューから「すべて保 存」を選択します。

Javaクラ スの追加およびTopLinkディスクリプタの作成

トピック・リス トに戻る

このレッスンでは、examples.session.threetier.modelパッ ケージに含まれるEmployeePhoneNumberおよびAddressクラスをJDeveloperプロジェクトに追加 する必要があります。 次の表に、クラスとデータベース表との関係を示します。

これらのファイルをプロジェクトに追加するには、次の手順を実行します。

1.

アプリケーション・ナビゲータで「Employee」 ノードを右クリックし、「プロジェクトに追加...」を選択します。

Move your mouse over this icon to see the image

「ファイルまたはディレクトリを追加」ダイアログボックスが表示されます。

 

2.

このレッスン用のファイルが格納されているexamplesディ レクトリに移動し、「開く」をクリックします。 これらのファイルが未解凍の場合は、前述の「前提条件」を参照してください。

Move your mouse over this icon to see the image

 

3.

「ファイルの選択の調整」ウィンドウで、次のクラスを選択し ます。

examples.sessions.threetier.model.Address.java
examples.sessions.threetier.model.Employee.java
examples.sessions.threetier.model.PhoneNumber.java

プロジェクト・ディレクトリにファイルをコピー」を選択し「OK」 をクリックして、Javaクラスをインポートします。

Move your mouse over this icon to see the image

 

4. 実行」メニューから「メ イク TopLinkTutorials.jws」を選択します。
5.

「ナビゲータ」ペインで「TopLink Mappings」を選択します。
「TopLink Mappings - 構造」ウィンドウで「ディスクリプタの追加またはプロジェクトからの削除」をクリックします。

Move your mouse over this icon to see the image

「TopLinkディスクリプタ」ダイアログ ボックスが表示されます。

 

6.

「使用可能なパッケージ/クラス」領域でexamples.sessions.threetier.modelパッ ケージを選択し、このパッケージを「選択したクラス」に移動します。

Move your mouse over this icon to see the image

OK」をクリックします。 JDeveloperにより、JavaクラスごとにTopLinkディスクリプタが作成されます。

 

7.

「ファイル」メニューから「すべて保存」を選択します。

 

 

ディスクリ プタとデータベース表との対応付け

トピック・リス トに戻る

プロジェクトにTopLinkのディスクリプタを新規作成し、Javaク ラスを追加した時点では、ディスクリプタにマッピングは定義されておらず、 クラスと表との対応付けに関する情報は含まれていません。 クラスをデータベース表に対応付ける手順は、次のとおりです。

オフライン・データベース表の追加
ク ラスと表との対応付け

オフライ ン・データベース表の追加

リストに戻る

1.

ナビゲータで「Employee」を右クリックし、「新 規」を選択します。

Move your mouse over this icon to see the image

「新規ギャラリ」ページが表示されます。


2.

「カテゴリ」ペインで、「Database Tier」→「Offline Database Objects」を選択します。
「項目」ペインで「データベースからインポートされたオフライン・データベース・オブジェクト」を選択します。

Move your mouse over this icon to see the image

OK」をクリックします。 「オフライン・データベースのインポート」ウィザードが表示されます。

 

3.

最初のページの情報を確認し、「次へ」をクリックします。
接続名としてtltutorialを選択します。 この接続が作成されていない場合は、前述の「前提条件」を参照してください。 「次 へ」をクリックします。

Move your mouse over this icon to see the image

 

4.

「使用可能」セクションで「ADDRESS」、「EMPLOYEE」 および「PHONE」を選択し、 移動ボタンによりこれらのオブジェクトを「選択済」セクションに移動させ、「次へ」をク リックします。

Move your mouse over this icon to see the image

 

5.

スキーマ名は、デフォルトのTLTUTORIALをそのまま使用し、「終了」 をクリックします。 JDeveloperにより、オフライン・データベース表がプロジェクトに追加されます。

Move your mouse over this icon to see the image

 

 

クラスと 表との対応付け

リストに戻る

次の手順を使用して、TopLinkの AddressディスクリプタをADDRESSデータベース表に対応付けます。

1.

ナビゲータで「TopLink Mappings」 を選択します。
「TopLink Mappings - 構造」ペインのAddressディスクリプタをダブル・クリックします。

Move your mouse over this icon to see the image

「エディタ」ペインにTopLinkマッピング・エディタが表示されます。

 

2.

マッピング・エディタで「ディスクリプタ情報」タブをクリックします。 「関連表」フィールドでTLTUTORIAL.ADDRESS表を選択します。 TopLinkは、各ディスクリプタの主キーを自動的に識別します。

Move your mouse over this icon to see the image

 

3.

手順1と2を繰り返し、次の対応付けを行います。

EmployeeとTLTUTORIAL.EMPLOYEE表
PhoneNumberとTLTUTORIAL.PHONE表

これにより、ディスクリプタは特定のデータベース表に対応付けられましたが、クラス属性と表の列 の対応付けはまだ行われていません。 この対応付けは、このレッスンの後半で行います。

 

4.

「ファイル」メニューから「すべて保存」を選択します。

 

フィールド へのダイレクト・マッピングの実装

トピック・リス トに戻る

Addressク ラスは他のクラスを参照しません。 代わりにこのクラスの属性は、フィールドへのダイレクト・マッピングとしてデータベース・フィールドへ直接マッピングされます。 Addressクラスの属性をADDRESS表のフィールドに直 接マッピングするには、次の手順を実行します。

1.

「TopLink Mappings - 構造」ウィンドウでAddressディスクリプタを展開します。

Move your mouse over this icon to see the image

ディスクリプタの属性が表示されます。

2.

city」をクリックします。

Move your mouse over this icon to see the image

「エディタ」ペインに、この属性に有効なマッピングが表示されます。

 

3.

フィールドへ直接」を選択し「マップ」をクリックします。

Move your mouse over this icon to see the image

「エディタ」ペインにフィールドへのダイレクト・マッピングの「一般」タブが表示されます。

「構造」ウィンドウで「city」属性を右クリックし、コンテキスト・メニューか ら「マップ」→「フィールドへ直接」を選択するか、またはTopLink Mappings 構造ツールバーで「マッ プ」をクリックして、属性のマッピングを行うこともできます。

 

4.

「データベース・フィールド」で「CITY」を選択します。

Move your mouse over this icon to see the image

 

5.

手順2~4を繰り返し、残りの属性のADDRESS表へのマッピングを行います。

country属性とCOUNTRYフィールドへのマッピング
id属性のADDRESS_IDフィールドへのマッピング
postalCode属性のP_CODEフィールドへのマッピング
province属性のPROVINCEフィールドへのマッピング
street属性のSTREETフィールドへのマッピング

 

6.

手順1~4を繰り返し、次の属性のEMPLOYEE表へのマッピングを行います。

firstName属 性のF_NAMEフィールドへのマッピング
id属性のEMP_IDフィールドへのマッピング
lastName属性のL_NAMEフィールドへのマッピング

手順1~4を繰り返し、次の属性のPHONE表へのマッピングを行います。

areaCode属性のAREA_CODEフィールドへのマッピング
number属性のP_NUMBERフィールドへのマッピング
type属性のTYPEフィールドへのマッピング

 

7. 「ファイル」メニューから「すべて保 存」を選択します。

 

オブジェク ト間の1対1マッピングの作成

トピック・リス トに戻る

各従業員に対応付ける自宅の住所は1つのみであるため、次に示すように、 address属性とAddressクラスとの間には、1対1マッピングを設定する必要があります。

1対1マッピングを作成するには、次の手順を実行します。

1.

「構造」ウィンドウでEmployeeディスクリプタを展開 します。

Move your mouse over this icon to see the image

 

2.

「構造」ペインで「address」属性をクリックします。 「エディタ」ペインに、この属性に有効なマッピングが表示されます。

Move your mouse over this icon to see the image

 

3.

1対1」を選択し「マップ」 をクリックします。 「エディタ」ペインに1対1マッピングの「一般」タブが表示されます。

Move your mouse over this icon to see the image

「構造」ウィンドウでaddress属性を右クリックし、コンテキスト・メニューから「マッ プ」→「1対1」を選択するか、またはTopLink Mappings 構造ツールバーで「マップ」をクリックし て、属性のマッピングを行うこともできます。

 

4.

「参照ディスクリプタ」フィールドで「Address」を選択します。 「ValueHolder インダイレクションの使用」オプションおよび「私有」オプションが選択されていることを確認します。 これにより、Addressオブジェクトの所有者である従業員が変化すると、Addressオブジェクトが自動的に作成、更新または削除されます。

Move your mouse over this icon to see the image

 

5.

1対1マッピングでは、リレーショナル・データベースの外部キーの概念を使用して、データベース 内に格納されている他のクラスのデータへアクセスします。 TopLinkが参照対象のオブジェクトの検索方法を認識できるよう、ディスクリプタに外部キー情報を指定する必要があります。

表参照」タブをクリックします。
「表参照」ドロップダウン・リストから「EMPLOYEE_ADDRESS」を選択します。

Move your mouse over this icon to see the image

この表参照では、外部キーはEMPLOYEE表のADDRESS_IDで、主キーは ADDRESS表のADDRESS_IDです。

 

6.

手順1~6を繰り返し、PhoneNumberディ スクリプタのowner属性を、1対1マッピングとし てEmployeeクラスにマッピングします。

参照ディスクリプタとしてEMPLOYEEを選択します。
「表参照」タブでPHONE_EMPLOYEE表を選択します。

 

 

オブジェク ト間の1対多マッピングの作成

トピック・リス トに戻る

VectorなどのJavaのコレクション(javautil.Collection)に属性をマッピングす る場合、アプリケーションでは、そのコレクションを所有しているクラスに対して1対多マッピングを行い、参照対象のクラスからは1対1マッピングを行う必 要があります。 参照対象のクラスの1対1マッピングは、ソース・クラスへの外部キーとして実装されます。 このレッスンでは、EmployeeクラスのphoneNumbers属性からPhoneNumberクラスに1対多マッピングを定義し、PhoneNumberクラスのowner属性からEmployeeクラスに1対1マッピングを定義する必要があり ます。 phoneNumbers属性をマッピング するには、次の手順を実行します。

1.

「構造」ウィンドウでEmployeeディス クリプタを展開します。

Move your mouse over this icon to see the image

 

2.

phoneNumbers属性をクリックします。 「エディタ」ペインに、この属性の有効なマッピングが表示されます。

Move your mouse over this icon to see the image

 

3.

1対多」を選択し「マップ」 をクリックします。 「エディタ」ペインに一対多マッピングの「一般」タブが表示されます。

Move your mouse over this icon to see the image

「構造」ウィンドウでphoneNumbers属 性を右クリックし、コンテキスト・メニューから「マップ」→「1対多」を選択するか、またはTopLink Mappings 構造ツールバーで「マップ」をクリックして、属性のマッピングを行うこともできます。

 

4.

「参照ディスクリプタ」ドロップダウン・リストから「PhoneNumber」を 選択します。

Move your mouse over this icon to see the image

 

5.

表参照」タブをクリックし、PHONE_EMPLOYEE表を選択します。

Move your mouse over this icon to see the image

 

6. 「ファイル」メニューから「すべて保 存」を選択します。

TopLink Employeeアプリケーションのデプロイ

トピック・リス トに戻る

次の手順では、Employeeプロジェクトを対象としたTopLink のデプロイメント・ディスクリプタ、セッション・ディスクリプタ、サンプル・クライアントおよびデータ管理層を作成します。 最後にJSPページを作成し、Webブラウザで従業員データを表示します。

1.

TopLink Mappingsのデプロイメント接続を作成します。 「構造」ペインでToplink Mappingsを選択し、「データベース情報」タブをクリックします。 「デプロイ接続」ドロップダウン・リストからtltutorialを 選択します。

Move your mouse over this icon to see the image

 

2.

アプリケーション・ナビゲータでTopLinkパッケージの下にある「TopLink Mappings」を右クリックし、「新規sessions.xm」を選択します。

Move your mouse over this icon to see the image

sessions.xmlをダブルクリックして、このファイルをエディタで開きま す。

 

3.

追加」をクリックし、新しいセッションを作成します。

Move your mouse over this icon to see the image

 

4.

セッション名をIntroToplinkSessionに変更します。

Move your mouse over this icon to see the image

OK」をクリックして、セッションを作成します。

 

5.

TopLinkのデプロイメント・ディスクリプタを作成します。 アプリケーション・ナビゲータで「TopLink Mappings」を右クリックし、コンテキスト・メニューから「toplink- deployment-descriptor.xmlの生成」を選択します。

Move your mouse over this icon to see the image

JDeveloperがJavaソースをコンパイルし、TopLinkのマッピングをチェック し、toplink-deployment-descriptor.xmlファ イルを生成します。 「OK」をクリックし、デプロイメント・ディスクリプタ・ウィンドウを閉じます。

 

6.

Employee.javaオブジェクトのデータ管理層を作成します。
ナビゲータで「Employee.java」を右クリックし、コンテキスト・メニューから「データ・コントロールの作成」を 選択します。

Move your mouse over this icon to see the image

「Select Deployment Resource」ダイアログ ボックスで「Sessions Configuration」を選択し、「Location」にsessions.xmlを指定し、「Sessions」にIntroToplinkSessionを 指定します。

 

7.

JavaオブジェクトからのデータをレンダリングするためのJSPページを作成します。
ナビゲータでEmployeeプロジェクトを右クリックし、コンテキスト・メニューから「新規」を選択します。

Move your mouse over this icon to see the image

「新規ギャラリ」ページが表示されます。

 

8.

「カテゴリ」ペインで「Web Tier」を選択し、その下の「JavaServer Pages (JSP)」を選択します。 「項目」ペインで、「JSPページ」を選択します。

Move your mouse over this icon to see the image

OK」をクリックします。

 

9.

JSPの名前をToplink.jspに変更します。

Move your mouse over this icon to see the image

OK」をクリックします。 ビジュアル・エディタにJPSが表示されます。

 

10.

「データ・コントロール・パレット」ペインで、EmployeeDataControlノー ドおよびreadAllEmployeeノードを展開し、returnノードを選択します。 「ドラッグ・アンド・ドロップの形式」ドロップダウン・リストで「Read-Only Table」が選択されていることを確認します。

Move your mouse over this icon to see the image

 

11.

returnノードをビジュアル・エディタにドラッグします。

Move your mouse over this icon to see the image

 

12.

右クリックして「実行」を選択し、JSPページを実行します。

Move your mouse over this icon to see the image

 

 

このレッスンでは、TopLinkよりリレーショナル・データベースへア クセスするJavaプロジェクトを作成するために必要となる基本的な手順を説明しました。 EJBマッピングを使用してTopLinkアプリケーションを作成する手順については、TopLinkの上級レベルのレッスンを参照してください。

このアイコンの上にカーソルを 置くと、すべてのスクリーンショットが非表示になります。