TopLinkによるJavaオブジェクトのデータベース表へ
のマッピング
このレッスンでは、TopLink Mapping
Editorを使用して、通常のJavaオブジェクトを単純な3層アプリケーションのデータベース表にマッピングする方法を説明します。
このレッスンの内容は次のとおりです。
約1時間
このアイコンの
上にカーソルを置くと、すべてのスクリーンショットが表示されます。
各手順に関連するスクリーンショットのみを表示する場合は、それぞれの手順のアイコンの上にカーソルを置いてください。
このレッスンを修了すると、Javaクラスのデータをリレー
ショナル・データベースに格納し、Javaクラスから現行のデータベース情報へアクセスできるようになります。
このシステムのオブジェクト・モデルを次の図に示します。
トピック・リス
トに戻る
ここでは、各従業員の名前、住所、電話番号などの従業員デー
タを追跡するアプリケーションを作成します。
トピック・リス
トに戻る
このレッスンを始める前に、次のことを実行しておく必要があります。
トピック・リス
トに戻る
TopLinkマッピングは、JDeveloperのワーク
スペースおよびプロジェクトに格納されます。 プロジェクトには、TopLinkのマッピングのデプロイメント・ディスクリプタを1つ設定できます。
| 1. |
JDeveloperで、新しいワークスペースとプロジェク
トを作成します。
「ファイル」メニューから「新規」を選択します。

「新規ギャラリ」ページが表示されます。
|
| 2. |
「カテゴリ」ペインで、「General」を選択します。 「項目」ペインで「ワー
クスペース」を選択し、「OK」をクリックします。
「ワークスペース作成」ダイアログ ボックスが表示されます。
|
| 3. |
「ワークスペース作成」ダイアログ ボックスで、ワークスペース名としてTopLinkTutorialsを
入力し、「OK」をクリックします。

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

ワークスペースおよびプロジェクトがナビゲータに追加されます。
|
| 5. |
アプリケーション・ナビゲータで「Employee」を右クリックし、「新
規」を選択します。

「新規ギャラリ」ページが表示されます。
|
| 6. |
「フィルタ方法」ドロップダウン・リストで、「すべてのテクノロジ」を選択しま
す。
「カテゴリ」ペインで、「General」→「Deployment Descriptors」を選択します。
「項目」ペインで、「TopLink Mappingディスクリプタ」を選択し「OK」をクリックします。

TopLink Mappingsの要素がナビゲータに表示されます。
|
| 7. |
「TopLink Mappings」を右クリックし、「デフォルトのマッ
ピング」を選択します。

「TopLink
Mappings」ページが、マッピング・エディタに表示され、「構造」ウィンドウも表示されます。
|
| 8. |
「ファイル」メニューから「すべて保
存」を選択します。 |
トピック・リス
トに戻る
このレッスンでは、examples.session.threetier.modelパッ
ケージに含まれるEmployee、PhoneNumberおよびAddressクラスをJDeveloperプロジェクトに追加
する必要があります。 次の表に、クラスとデータベース表との関係を示します。

これらのファイルをプロジェクトに追加するには、次の手順を実行します。
| 1. |
アプリケーション・ナビゲータで「Employee」
ノードを右クリックし、「プロジェクトに追加...」を選択します。

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

|
| 3. |
「ファイルの選択の調整」ウィンドウで、次のクラスを選択し
ます。
examples.sessions.threetier.model.Address.java
examples.sessions.threetier.model.Employee.java
examples.sessions.threetier.model.PhoneNumber.java
「プロジェクト・ディレクトリにファイルをコピー」を選択し「OK」
をクリックして、Javaクラスをインポートします。

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

「TopLinkディスクリプタ」ダイアログ ボックスが表示されます。
|
| 6. |
「使用可能なパッケージ/クラス」領域でexamples.sessions.threetier.modelパッ
ケージを選択し、このパッケージを「選択したクラス」に移動します。

「OK」をクリックします。
JDeveloperにより、JavaクラスごとにTopLinkディスクリプタが作成されます。
|
| 7. |
「ファイル」メニューから「すべて保存」を選択します。
|
トピック・リス
トに戻る
プロジェクトにTopLinkのディスクリプタを新規作成し、Javaク
ラスを追加した時点では、ディスクリプタにマッピングは定義されておらず、 クラスと表との対応付けに関する情報は含まれていません。
クラスをデータベース表に対応付ける手順は、次のとおりです。
オフライ
ン・データベース表の追加
リストに戻る
| 1. |
ナビゲータで「Employee」を右クリックし、「新
規」を選択します。
「新規ギャラリ」ページが表示されます。
|
| 2. |
「カテゴリ」ペインで、「Database Tier」→「Offline
Database Objects」を選択します。
「項目」ペインで「データベースからインポートされたオフライン・データベース・オブジェクト」を選択します。

「OK」をクリックします。
「オフライン・データベースのインポート」ウィザードが表示されます。
|
| 3. |
最初のページの情報を確認し、「次へ」をクリックします。
接続名としてtltutorialを選択します。 この接続が作成されていない場合は、前述の「前提条件」を参照してください。 「次
へ」をクリックします。

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

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

|
クラスと
表との対応付け
リストに戻る
次の手順を使用して、TopLinkの
AddressディスクリプタをADDRESSデータベース表に対応付けます。
| 1. |
ナビゲータで「TopLink Mappings」
を選択します。
「TopLink Mappings - 構造」ペインのAddressディスクリプタをダブル・クリックします。

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

|
| 3. |
手順1と2を繰り返し、次の対応付けを行います。
EmployeeとTLTUTORIAL.EMPLOYEE表
PhoneNumberとTLTUTORIAL.PHONE表
これにより、ディスクリプタは特定のデータベース表に対応付けられましたが、クラス属性と表の列
の対応付けはまだ行われていません。 この対応付けは、このレッスンの後半で行います。
|
| 4. |
「ファイル」メニューから「すべて保存」を選択します。
|
トピック・リス
トに戻る
Addressク
ラスは他のクラスを参照しません。
代わりにこのクラスの属性は、フィールドへのダイレクト・マッピングとしてデータベース・フィールドへ直接マッピングされます。 Addressクラスの属性をADDRESS表のフィールドに直
接マッピングするには、次の手順を実行します。
| 1. |
「TopLink Mappings -
構造」ウィンドウでAddressディスクリプタを展開します。

ディスクリプタの属性が表示されます。
|
| 2. |
「city」をクリックします。

「エディタ」ペインに、この属性に有効なマッピングが表示されます。
|
| 3. |
「フィールドへ直接」を選択し「マップ」をクリックします。

「エディタ」ペインにフィールドへのダイレクト・マッピングの「一般」タブが表示されます。
「構造」ウィンドウで「city」属性を右クリックし、コンテキスト・メニューか
ら「マップ」→「フィールドへ直接」を選択するか、またはTopLink Mappings 構造ツールバーで「マッ
プ」をクリックして、属性のマッピングを行うこともできます。
|
| 4. |
「データベース・フィールド」で「CITY」を選択します。

|
| 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つのみであるため、次に示すように、
address属性とAddressクラスとの間には、1対1マッピングを設定する必要があります。

1対1マッピングを作成するには、次の手順を実行します。
| 1. |
「構造」ウィンドウでEmployeeディスクリプタを展開
します。

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

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

「構造」ウィンドウでaddress属性を右クリックし、コンテキスト・メニューから「マッ
プ」→「1対1」を選択するか、またはTopLink Mappings 構造ツールバーで「マップ」をクリックし
て、属性のマッピングを行うこともできます。
|
| 4. |
「参照ディスクリプタ」フィールドで「Address」を選択します。 「ValueHolder
インダイレクションの使用」オプションおよび「私有」オプションが選択されていることを確認します。
これにより、Addressオブジェクトの所有者である従業員が変化すると、Addressオブジェクトが自動的に作成、更新または削除されます。

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

この表参照では、外部キーはEMPLOYEE表のADDRESS_IDで、主キーは
ADDRESS表のADDRESS_IDです。
|
| 6. |
手順1~6を繰り返し、PhoneNumberディ
スクリプタのowner属性を、1対1マッピングとし
てEmployeeクラスにマッピングします。
参照ディスクリプタとしてEMPLOYEEを選択します。
「表参照」タブでPHONE_EMPLOYEE表を選択します。
|
トピック・リス
トに戻る
VectorなどのJavaのコレクション(javautil.Collection)に属性をマッピングす
る場合、アプリケーションでは、そのコレクションを所有しているクラスに対して1対多マッピングを行い、参照対象のクラスからは1対1マッピングを行う必
要があります。 参照対象のクラスの1対1マッピングは、ソース・クラスへの外部キーとして実装されます。 このレッスンでは、EmployeeクラスのphoneNumbers属性からPhoneNumberクラスに1対多マッピングを定義し、PhoneNumberクラスのowner属性からEmployeeクラスに1対1マッピングを定義する必要があり
ます。 phoneNumbers属性をマッピング
するには、次の手順を実行します。
トピック・リス
トに戻る
次の手順では、Employeeプロジェクトを対象としたTopLink
のデプロイメント・ディスクリプタ、セッション・ディスクリプタ、サンプル・クライアントおよびデータ管理層を作成します。
最後にJSPページを作成し、Webブラウザで従業員データを表示します。
| 1. |
TopLink Mappingsのデプロイメント接続を作成します。 「構造」ペインでToplink
Mappingsを選択し、「データベース情報」タブをクリックします。 「デプロイ接続」ドロップダウン・リストからtltutorialを
選択します。

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

sessions.xmlをダブルクリックして、このファイルをエディタで開きま
す。
|
| 3. |
「追加」をクリックし、新しいセッションを作成します。

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

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

JDeveloperがJavaソースをコンパイルし、TopLinkのマッピングをチェック
し、toplink-deployment-descriptor.xmlファ
イルを生成します。 「OK」をクリックし、デプロイメント・ディスクリプタ・ウィンドウを閉じます。
|
| 6. |
Employee.javaオブジェクトのデータ管理層を作成します。
ナビゲータで「Employee.java」を右クリックし、コンテキスト・メニューから「データ・コントロールの作成」を
選択します。

「Select Deployment Resource」ダイアログ ボックスで「Sessions
Configuration」を選択し、「Location」にsessions.xmlを指定し、「Sessions」にIntroToplinkSessionを
指定します。
|
| 7. |
JavaオブジェクトからのデータをレンダリングするためのJSPページを作成します。
ナビゲータでEmployeeプロジェクトを右クリックし、コンテキスト・メニューから「新規」を選択します。

「新規ギャラリ」ページが表示されます。
|
| 8. |
「カテゴリ」ペインで「Web Tier」を選択し、その下の「JavaServer
Pages (JSP)」を選択します。 「項目」ペインで、「JSPページ」を選択します。

「OK」をクリックします。
|
| 9. |
JSPの名前をToplink.jspに変更します。

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

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

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

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