Oracle JDeveloperを使用したデータベース開発

目的

このチュートリアルでは、JDeveloperを使用してオンラインおよびオフラインでデータベース開発を実行 する方法について説明します。 具体的には、UMLクラス図を使用して論理モデルを作成し、これを物理モデルへと変換します。 また、データベース定義に対してリバース・エンジニアリングを実行し、表テンプレートを使用して新しい表定義を作成します。
バージョニング・ツールとしてSubversionを使用し、各種のコンポーネント定義を比較します。 また、データベース内のPL/SQLオブジェクトを作成しテストする方法についても学習します。

所要時間

約50分

トピック

このチュートリアルでは、以下のトピックについて説明します。

 概要
 シナリオ
 前提条件
 モデル・プロジェクトの作成
 UMLクラス・モデルを使用した論理モデリング
 クラス・モデルからデータベース・モデルへの変換
 データベースからデータベース・モデルへのリバース・エン ジニアリング
 アプリケーションのバージョニング
 論理モデルと物理モデルの比較
 バージョン・コピー間でのデータベース・オブジェクトの比 較
 表テンプレートの作成
 データベース・レポートの作成
 データベース内のPL/SQLオブジェクトの作成とデ バッグ
 まとめ

スクリーンショットの表示

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロード し、表示されます。 (警告: すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

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

概要

このチュートリアルでは、JDeveloperのデータベース機能を使用して、次の作業を実行します。

 クラスのモデル化と、データベース定義への変換
 データベース定義からデータベース・モデルへのリバース・エンジニアリング
 バージョニング・ツールとしてのSubversionの使用
 論理データベース・モデルと物理データベース・モデルの比較
 バージョン・コピー間でのデータベース・オブジェクトの比較
 表テンプレート定義の作成と使用
 カスタマイズ・レポートの作成
 データベース内のPL/SQLオブジェクトの作成、テスト、デバッグ

トピック・リスト に戻る

 

シナリオ

データベース・デザイナーに対して、現在の本番スキーマを部分的に見直し、何らかの変更と拡張を行った後で、監 査を可能にし、将来的なデータベース開発に向けた基準設定を開始するよう要求が出されています。 ここでは、UMLクラス図を使用して論理モデルを作成し、これを物理モデルへと変換します。

データベースの更新作業に関する具体的な内容は、 Fusion Order Demoスキーマに若干の変更を加え、新規のデータベース表を作成するというものです。 また、データベース内のPL/SQLオブジェクトの作成とテストも同時に実施します。

トピック・リストに戻る

前提条件

このチュートリアルを始める前に、次のことを確認してください。

1.

Oracle JDeveloper 11g Version 11.1.1.2.0にアクセスできるか、またはインストール済みであること。この製品は Oracle Technology Networkからダウンロードできます。

 

2.

Oracle Fusionスキーマにアクセスできるか、またはインストール済みであること。

このOracle by Example(OBE)では、Fusion Order Demo(FOD)スキーマを使用します。 手順に従い、サンプル・スキーマをダウンロードおよびインストールします。手順は以下の場所から入手できます。

http://www.oracle.com/technology/obe/obe11jdev/11/common/connection11g.htm

 

3.

スタート」→「 すべてのプログラム」 →「 Oracle Fusion Middleware 11.1.1.2.0」→「 JDeveloper Studio 11.1.1.2.0」を選択して、Oracle JDeveloperを起動します。

Migrate User Settingsダイアログ・ボックスが表示されたら、「 NO」 をクリックします。

ユーザー・ロールを選択するプロンプトが表示されたら、「 Database Edition」を選択します。

Oracle Usage TrackingプロンプトとTip of the Dayウィンドウを 終了します。

 

4.

JDeveloper IDEが表示されます。

トピック・リストに戻る

モデル・プロジェクトの作成

JDeveloperで作業を行う場合、一連の作業をまとめたものがアプリケーション内でプロジェ クトと呼ばれます。 JDeveloperには、数多くの事前定義済みテンプレートが用意されています。このテンプレートを使用すると、各種アプリケーションの開発用に設定さ れたアプリケーションやプロジェクトを簡単に作成できます。
また、このテンプレートによって、JDeveloperでサポートされている基本的なテクノロジー環境が提供されます。 作業環境を構築するには、ニーズにもっとも合ったテンプレートを選択した上で、使用予定のテクノロジーを追加する必要があれば、これを追加する設定を行い ます。 新規ギャラリとコンテキスト・メニューに表示されるオプションは、そのアプリケーション用に選択したテンプレートによって異なります。

このトピックでは、事前に定義されたテンプレートを使用しないでアプリケーションとプロジェクトを 作成する方法について説明します。また、 JDeveloperのデータベース機能を利用で きるように、プロジェクトをカスタマイズします。

1.

アプリケーション・ナビゲータで「 New Application」リンクをクリックします。

 

2.

Create Generic Applicationダイアログで、アプリケーション名をApplication1から DBModelingに 変更します。 新しいアプリケーション名に合わせてディレクトリは自動的に変更されます。

Generic Applicationテンプレートが選択されていることを確認して、「 Next」 をクリックします。


3.

ウィザードのステップ2で、プロジェクト名に LogicalModelと入力し、 Project Technologiesタブから「 Database (Offline)」および「 UML」 を選択したら、「  」をクリックして Selectedペインに移動します。

Finish」をクリックします。


4.

Save Allアイコン「  」をクリックして、作業内容を保存します。 以降、チュートリアルの残りの部分においても定期的に作業内容を保存してください。


トピック・リストに戻る

UMLクラス・モデルを使用した論理モデリ ング

ここでは、Fusion Order Demoクラス・モデルの一部を作り直します。 その後、このモデルをデータベース・モデルに変換し、その表定義を稼働中のデータベースからリバース・エンジニアリングしたものと比較します。

以下のトピックでは、UML クラス図の作成について説明します。

 クラス・モ デル図向けの環境の準備
 クラス・モデル図の作成
 クラス・モデルの拡張

トピック・リストに戻る

クラス・モデル図向けの 環境の準備

クラス図向けの環境を準備するには、以下の手順を実行します。

1.

アプリケーション・ナビゲータで「 Model」プロジェクトを右クリックし、コンテキスト・メ ニューから「 New」を選択して新規ギャラリを表示します。

 

2.

カテゴリ・リストで Generalが開かれていない場合は、ここで開きます。「 Diagrams」 を選択します。 項目リストから「 Class Diagram」を選択し、「 OK」 をクリックします。


3.

Create Class Diagramダイアログで、Nameを Logical Databaseに、 Packageを logicalmodelに変更して、「 OK」をクリックしま す。

新規データベース・ダイアグラムが開きます。

 

4.

クラス図のプリファレンスを設定します。「 Tools」→「 Preferences」 を選択します。

 

5.

Preferencesダイアログで「 Diagrams」→「 Class」 の順に選択し、Edit Preferences forで「 Class」を選択してから「 Show Operations」の選択を解除します。これは、これから実行する論理データベース・モデリングでは必要ないためです。

 

6.

Attributes」タブをクリックし、今回は必要ない「 Show Visibility」の選択を解除します。また、「 Sort Alphabetically」の 選択も解除します。

OK」をクリックします。 ここで設定したプリファレンスは、すべてのクラス図に適用されます。

 

7.

ダイアグラム領域の右側にコンポーネント・パレットが表示されます。 コンポーネント・パレットには、このダイアグラムで使用できる要素が用意されています。 コンポーネント・パレットが表示されていない場合は、「 View」 →「 Component Palette」の順に選択してコンポーネント・パレットを開きます。

トピックに戻る

トピック・リストに戻る

クラス・モデル図の作成

次のイメージは、これから作成する3つのクラス(Product Base、Warehouse、Warehouse Stock Level)を示しています。 1つの製品が複数の倉庫で保管されていることが分かります。

ダイアグラムを作成するには、以下の手順を実行します。

1.

コンポーネント・パレットで Classコンポーネント「  」 を選択し、ダイアグラム上にドラッグ・アンド・ドロップします。

名前を Product Baseに変更します。

 

2.

この操作を繰り返し、さらに2つのクラス( Warehouseおよび Warehouse Stock Level)を作成します。


3.

インプレース編集を使用して、クラスに属性を追加します。 Product Baseクラスを1 回クリックして位置を選択します(青色に変わります)。再度クリックして編集モードに切り替えたら(ダブルクリックしないでください)、 < 属性名>:<データベース型>の形式で上書きして Name : Stringに 変更します。

 

4.

同様の操作を繰り返して、次のイメージのとおりに属性を作成します。

 

5.

Product Base」クラスをダブルクリックしてプ ロパティを編集します。 「 Owned Attribute」ノードを開いて、作成した属性を表示します。

Name」ノードを開くと、定義可能な各種プロパティを参照できます。 「 OK」 をクリックして終了します。

 

6.

コンポーネント・パレットで 1 to * Associationアイコン「  」をクリックしてから、 Product Baseクラスをクリッ クして線を引き、 WarehouseStockLevelsクラスをクリックします。

この 関連をダブルクリックしてプロパティを開き、「 Owned End」 ノードを開いて名前に stocked atofを入力します。

OK」をクリックします。

 

7.

WarehouseWarehouseStockLevels間 の 1対多関連について上記ステップを繰り返し、 holder ofおよび atと いう名前を付けます。

 

8.

ダイアグラムは、次のように表示されます。

トピックに戻る

トピック・リストに戻る

クラス・モデルの拡張

このクラス・モデルを更新して、新しいクラスをデータベース表へと変換します。 既存のクラス・モデルから明らかであるとおり、WarehouseStock Level(倉庫在庫水準)クラスには各Warehouse(倉庫)に保管されているProduct(製品)のQuantity on Hand(数量)が記録されます。

ダイアグラムを作成するには、以下の手順を実行します。

1.

Warehouse StockLevel」を選択し、 Quantity on Handの下の行をクリックして新しい属性として Reorder Level: NumberReorder Quantity: Numberを追加します。

 

2.

コンポーネント・パレットからダイアグラムに新規クラス(  )を追加し、 Stock Reorderという名前を付けます。


3.

インプレース編集を使用して、 Date Reordered: Dateおよび Date Delivered: Dateという2つの属性をクラスに追加します。

 

4.

コンポーネント・パレットで 1 to * Associationアイコン「  」をクリックしてから、「 Warehouse」クラスをクリック して線を引き、「 Stock Reorder」クラスをクリックします。

endWarehouse」関連をクリックし、Nameフィールドを replenish byに変更します。

ダイアグラムの別の部分をクリックして関連の選択を解除してから、「 endWarehouse」関 連端をクリックし、プロパティ・インスペクタでNameに replenish byを入力します。

endStock Reorder」関連端をクリックし、プロパティ・インスペクタで reordered forという名前を入力します。

 

5.

上記ステップを繰り返して Warehouse Stock Levelおよび Stock Reorder間に関連を作成して on behalf ofという名前を付け、この関連の両端にそ れぞれ recipient ofon behalf ofという名前を付けま す。

 

6.

ダイアグラムは次のように表示されます。

 

7.

コンポーネント・パレットからダイアグラムに新規クラス(  )を追加し、 Manualという名前を付けます。

Reorder Quantity: Numberという属性を追加します。

 

8.

コンポーネント・パレットのGeneralizationアイコン(  )を使用して、 Manualクラスから Stock Reorderクラスへと線を引きます。

 

9.

コンポーネント・パレットからダイアグラムに新規クラス(  )を追加し、 Automaticという名前を付けます。

 

10.

コンポーネント・パレットのGeneralizationアイコン(  )を使用して、 Automaticクラスから Stock Reorderクラスへと線を引きます。

Stock Reorderは、ManualクラスとAutomaticクラスの汎化クラスです。 この概念は、サブタイプを使用して'データベース指向表現'にも実装できます。

 

11.

Manual」クラスを選択し、 Stock Reorderク ラス内にドロップします。

 

12.

このモデルでは内部と外部の両方からの混合汎化表現が可能ですが、モデルを分かりやすくするため、いずれかの表記規則(内部または外 部)を選び、一貫してそれに従うことを推奨します。
Automatic」クラスを選択し、 Stock Reorderクラス内にド ロップします。 この2つのサブクラスをスーパークラス内に配置したことは、単なる視覚的効果にすぎず、 モデルに対する意味的な変更はありません。

この2つの汎化は、在庫を再注文する際の方法を表しています。 データベース・モデリング用語では、これらはStock Reorderのサブタイプになります。

 

13.

ダイアグラムのレイアウトを次のように変更します。

トピックに戻る

トピック・リストに戻る

クラス・モデルからデータベース・モデルへの変換

データベース・ダイアグラムを作成するには、以下の手順を実行します。

1.

メイン・メニューから「 Edit」→「 Select All」 の順に選択し、ダイアグラム内のすべてのクラスを選択します。

 

2.

いずれかのクラスを右クリックし、コンテキスト・メニューから「 Transform」→「 New Diagram」の順に選択します。


3.

Transformダイアログで「 UML to Offline Database Objects」を選択します。 Database Edition以外のロールでJDeveloperを起動した場合、ここに表示されるオプションは異なります。

OK」をクリックします。

 

4.

Offline Database Objects from UML Class Modelダイアログで、 Offline Databaseフィールドの横にある「 New」ボタンをクリックします。

Create Offline Databaseダイアログで、名前に StockLevelと入力 し、デフォルト・スキーマに FODと入力します。

OK」をクリックします。

 

5.

1つ前のダイアログに戻り、「 Default Schema」を選択して「 Next」 をクリックします。

 

6.

次のオプションを選択します。

  • Capitalize the UML name
    • Insert underscores between lower and uppercase letters
  • Attempt to pluralize table names
  • Invert UML association

Next」をクリックします。

 

7.

Transform only root classes, inheriting from specialized classes」オプションを選択します。

Next」をクリックします。

 

8.

STOCK_REORDERS」を開き、MANUALサブタイプとAUTOMATICサブタイプ の識別子として STOCK_REORDERS_TYPE列が追加されていることを確認します。

Next」→「 Finish」をクリックします。

 

9.

Create Database Diagramダイアログで名前に LogicalDBModelと 入力したら、パッケージ名はデフォルトのlogicalmodelのままにします。

OK」をクリックします。

 

10.

メイン・メニューから「 Edit」→「 Select All」 の順に選択し、いずれかの表を右クリックして「 Optimize Shape Size」→「 Height and Width」の順に選択します。

新しいダイアグラムは次のようになります。

11.

ダイアグラムを右クリックし、新しい表示方法として「 Lay Out Shapes」→「 Hierarchical (Left to Right)」を選択します。

 

12.

関連を右クリックしてコンテキスト・メニューから「 Select All This Type」を 選択し、再度右クリックして「 Straighten Lines」を選択します。

 

13.

ダイアグラムは、次のように表示されます。

トピック・リストに戻る

データベースからデータベース・モデルへのリバース・ エンジニアリング

ここでは、データベース・スキーマの定義を取得して、新規プロジェクトにそのオフライン表現を作成します。 データベース・スキーマをリバース・エンジニアリングする前に、データベース接続を作成する必要があります。

 データベー ス接続の作成
 データベース・コンポーネントからデータベース・モデルへのリバース・エンジニアリング

トピック・リストに戻る

データベース接続の作成

FODスキーマへのデータベース接続を作成するには、以下の手順を実行します。

1.

アプリケーション・ナビゲータで「 Application Resources」アコーディオンを開きます。 「 Connections」ノードを右クリック して、「 New Connection」→「 Database」を選択します。


2.

Create Database Connectionで、以下の値を入力します。

接 続名 FOD
ユー ザー名 fod
パス ワード fusion
パス ワードの保存 選 択します
ドライ バ thin
ホ スト名 localhost
JDBC ポート 1521
SIDま たは サービス名 ORCL/XE

Test Connection」ボタンをクリッ クします。

データベースが使用可能な状態にあり、接続情報が正しい場合は、ステータス・ウィンドウ に Success!と表示されます。表示されたら、「 OK」をクリックします。

エラーが発生した場合、接続設定を確認します。必要に応じて変更を加え、接続を再度テス トします。 それでも接続できない場合は、データベースに問題があるか、データベースが稼働していない可能性があります。


3.

新しいデータベース・エントリがApplication Resourcesナビゲータに表示されます。 「 Database」ノードを開き、作成したFOD接続を表示しま す。

4. Save All 」をクリックして、作業内容を保存します。

トピックに戻る

トピック・リストに戻る

データベース・コンポー ネントからデータベース・モデルへのリバース・エンジニアリング

FODスキーマのデータベース表からデータベース・モデルへのリバース・エンジニアリングを実行するには、以下 の手順を実行します。

1.

論理モデルと物理モデルを区別するため、別のプロジェクトを作成します。 メイン・メニューから「 File」 →「 New」を選択します。

 

2.

新規ギャラリで「 General」ノードを開いて「 Projects」 カテゴリを選択し、項目から「 Generic Project」を選択します。

OK」をクリックします。


3.

プロジェクト名に PhysicalModelと入力したら、「 Database (offline)」を選択済みテクノロジー(Selected)に移動します。

Finish」をクリックします。

 

4.

アプリケーション・ナビゲータで、「 PhysicalModel」プロジェクトを右クリックして、 コンテキスト・メニューから「 New」を選択します。

 

5.

新規ギャラリで、「 Diagrams」と「 Database Diagram」 を選択します。

OK」をクリックします。

 

6.

Create Database Diagramダイアログで名前に FOD_Physical と 入力したら、パッケージ名はデフォルトの physicalmodelのままにします。

OK」をクリックします。

 

7.

Application Resourcesアコーディオンを開き、「 Connections」→ 「 Database」→「 FOD」→「 Tables」 の順にノードを開いたら、「 PRODUCTS_BASE」、「 WAREHOUSES」、 「 WAREHOUSE_STOCK_LEVELS」を複数選択します。 選択した表をダイアグラムにドロップすると、これらの表がインポートされます。

 

8.

Specify Locationダイアログで、「 Copy Objects to Project」 オプションを選択して、Offline Databaseフィールドの横にある「 New」ボタンをクリックします。

Create Offline Databaseダイアログで、名前に FOD_Physicalと 入力し、デフォルト・スキーマに FODと入力したら、「 Initialize Default Templates」オプションの選択を解除します。

OK」をクリックし、もう一度「 OK」をクリックします。

 

9.

ダイアグラムを右クリックし、コンテキスト・メニューから「 Lay Out Shapes」→「 Row」 の順に選択します。

OK」をクリックします。

 

10.

WAREHOUSES表に STOCK_VALUE: NUMBER(15,2)列 を追加します。

この列を WAREHOUSE_NAMEの下に移動します。


(STOCK_VALUE = (各ProductのQuantity on Hand) x (原価))になりますが、これはさまざまな方法で実装できます。

 

11.

Save All 」をクリックして、作業内容を保存します。

 

12.

ダイアグラムは、次のように表示されます。

トピックに戻る

トピック・リストに戻る

アプリケーションのバージョニング

多くの企業では、ソース・コード管理リポジトリを使用して、データベース設計を含むすべてのドキュ メントとアプリケーション・コードが保管されています。 開発フェーズと保守フェーズを通じて、このリポジトリからオフライン・データベース・モデルはアクセスされ、唯一の情報源として使用されます。 このチュートリアルでは、'test'という名前のローカルSubversionリポジトリを作成し、JDeveloperを使用して異なるバージョンの データベース・モデルを比較する方法について説明します。 実際には、完全なSubversion(SVN)リポジトリを作成する必要があります。SVNリポジトリの作成と保護について詳しくは、 http://svnbook.red-bean.com/を参照 してください。

1.

メイン・メニューから「 Versioning」→「 Create Local Repository」を選択します。

 

2.

Create Subversion Repositoryダイアログで、新しいリポジトリ・パスとして repositoryと 入力し、接続名として MyRepositoryを指定します。

 

3.

バージョニング・ナビゲータが開きます。 「 Subversion」ノードをクリックして、新し いリポジトリが表示されていることを確認します。

 

4.

テスト用のローカル・リポジトリを右クリックし、コンテキスト・メニューから「 New Remote Directory」を選択します。

 

5.

Create Remote Directoryダイアログで、ディレクトリ名に trunkと入力 し、コメントに main root folder for applicationsと入力します。

OK」をクリックします。


6.

SVN Console Logに、このコマンド用に発行されたステートメントが表示されます。

バージョニング・ナビゲータに新しいエントリが作成されています。

 

7.

メイン・メニューから「 Versioning」→「 Version Application」を選択します。

 

8.

Import Subversionウィザードが開いたら、「 Next」をクリックして Welcomeページをスキップします。ステップ2で、リポジトリ接続に「 MyRepository」を選択し、パス として「 trunk」を選択します。

Next」をクリックします。

 

9.

ステップ3では、現在の作業領域の場所がデフォルトで表示されます。コメントとして Versioned DB Modeling applicationを追加します。

Next」をクリックします。 右側に表示されているリストは、アプリケーションのインポート時に適用されるデフォルト・フィルタです(たとえば、コンパイル済みクラスはインポートされ ません。'**/classes/**'エントリを参照してください)。
ステップ4で、再度「 Next」をクリックします。

 

10.

Optionsページで「 Perform Checkout」を選択します。

Next」に続き、「 Finish」をクリックします。 Subversionコントロールへファイルをインポートするプロセスが開始されます。

 

11.

アプリケーション・ナビゲータは、次のように表示されます。

トピック・リストに戻る

論理モデルと物理モデルの比較

JDeveloperでは、複数のオブジェクト定義 を比較できます。 比較対象となるオブジェクトが別々のプロジェクトに格納されているため、比較を実行するにはオブジェクト間の依存関係を作成しておく必要があります。 オブジェクト定義を比較するには、以下の手順を実行します。

1.

はじめに、LogicalModelプロジェクトとPhysicalModelプロジェクト間の依存関係を作成します。 「 LogicalModel」 プロジェクト・ノードを右クリックし、コンテキスト・メニューから「 Project Properties」を選択し ます。

Dependencies」ノードを選択して、「 Edit Dependencies」ボタンをクリックします。

Edit Dependenciesダイアログで、 PhysicalModelプロジェクトの「 Build Output」チェック・ボックスを選択します。

OK」をクリックし、もう一度「 OK」をクリックします。

 

2.

次に、2つのオフライン・データベース(StockLevelとFOD_Physical)間の依存関係を作成します。 「 LogicalModel」 →「 Offline Data Sources」の順に開き、「 StockLevel」 オフライン・データベースを右クリックして、コンテキスト・メニューから「 Properties」を選択します。

Dependencies」ノードを選択して Addボタン「  」をクリックします。Offline Databaseダイアログで、プロジェクトに「 PhysicalModel」 を選択し、オフライン・データベースとして「 FOD_Physical」を選択します。

OK」をクリックし、もう一度「 OK」をクリックします。

 

3.

オフライン・データベース・ソースから「 StockLevel」を右クリックし、「 Copy to Project」を選択します。

'Copy to Project'を使用すると、'ソース'データベース(オフラインまたはオンライン)のデータベース・オブジェクトを別のオフライン・データベースのオ ブジェクトに対して、コピー、比較、およびマージできます。 この例では、StockLevelオフライン・データベースとFOD_Physicalオフライン・データベースを比較します。 別のオンライン・データベースに対して同じ機能を実行するには、'Generate'メニュー・オプションを使用します。

 

4.

Copy Database Objects to a Projectウィザードで「 Source from project 」を選択し、オフライン・データベースとして「 StockLevel」が選択さ れていることを確認します。

Next」をクリックします。

 

5.

次のステップで、プロジェクトに「 PhysicalModel」を選択し、オフライン・データベー スに「 FOD_Physical」を選択します。

Next」をクリックします。

 

6.

Object Pickerページで「 STOCK_REORDERS」と「 WAREHOUSE_STOCK_LEVELS」 を選択したら、右矢印ボタンを使用して選択済みペインに移動します。

Next」をクリックします。

 

7.

Choose Operationページで、「 ALTER」と「 Manual Reconcile」を選択します。 こうすることで、物理モデルに対する変更を事前に確認できます。

Next」をクリックします。

 

8.

提示されたすべての変更を確認します。 論理モデルと物理モデルにおける相違点に注意します。

 

9.

物理モデルには STOCK_REORDERS表が存在せず、双方のモデルの WAREHOUSE_STOCK_LEVELS表 には複数の相違点があることを確認します。

 

10.

WAREHOUSE_STOCK_LEVELS表の相違点について詳しく確認します (たとえば、論理モデルの quantity_on_hand列には正しい数値精度が指定されておらず、 WAREHOUSE_STOCK_LEVELS論理表に監査列がありません)。

 

11.

論理モデルの WAREHOUSE_STOCK_LEVELS表に存在するが物理モデルには存在しな い列を、右矢印ボタンを使用して移動します。

物理モデルに新しく追加された列には (add)コメントが追加されることを確認します。

 

12.

物理モデルの STOCK_REORDERS表も移動します。

Next」をクリックします。

 

13.

サマリー・レポートを確認し、「 Finish」をクリックします。

 

14.

アプリケーション・ナビゲータに STOCK_REORDERS表が表示されています。

 

15.

再度、 FOD_Physical.dbダイアグラムを開きます。 ダイアグラムに表示されるのはオフライン・オブジェクトであるため、 WAREHOUSE_STOCK_LEVELS表 に新しい列が表示されています。

 

16.

ナビゲータで、「 STOCK_REORDERS」を選択して、ダイアグラムにドロップします。

 

17.

ダイアグラムを右クリックし、コンテキスト・メニューから「 Lay Out Shapes」→「 Row」 の順に選択します。

 

18.

ダイアグラムは次のように表示されます。

 

19. 変更を保存します。

トピック・リストに戻る

バージョン・コピー間でのデータベース・オブジェクト の比較

バージョニングされたコンポーネントについては、コンポーネントの変更履歴を確認し、バージョン間 での比較を実行できます。 バージョン別の定義を比較するには、以下の手順を実行します。

1.

はじめに、アプリケーションに対して行ったすべての変更をSubversionリポジ トリに反映させる必要があります。 メイン・メニューから「 Versioning」→「 Pending Changes」の順に選択します。

 

2.

Pending Changesウィンドウに、各種コンポーネントのステータスが表示されます。 Outgoingタ ブに、新規ファイルと最後のコミット以降に変更されたすべてのファイルのリストが表示されます。 Pending Changesメニューがグレーアウトされている場合は、ナビゲータでいずれかのアプリケーション・ノードを選択してから再試行してください。


3.

Candidates」タブをクリックし、アプリケーションに追加された新規ファイルのうち、 バージョン管理対象になっていないファイルを表示します。 STOCK_REORDERS表は、まだバージョン管理されていません。

 

4.

メイン・メニューから「 Versioning」→「 Commit Working Copy」の順に選択します。

 

5.

Commit Working Copyダイアログで、「 OK」をクリックします。

バージョニングにおけるベスト・プラクティスとして、コミットする際は常にコメントを残します。

 

6.

Candidates」タブをクリックして「 STOCK_REORDERS」 表を選択したら、 Addボタン「  」をクリックして STOCK_REORDERS表を Outgoingタブに移動します。

 

7.

Outgoingタブで「 STOCK_REORDERS」表を 選択したら、「 Commit」ボタンをクリックしてこの表をバージョニングします (この方法で、要素をSubversionのバージョン管理下に置くこともできます)。

Commit Resourcesダイアログで、「 OK」をクリックしてコミットを実行します。

 

8.

ここまでで、warehouse_stock_levelsに加えた変更をバージョン間で比較する準備が整いました。 アプリケーション・ナビゲータで「 warehouse_stock_levels」を右クリックし、コンテキスト・メ ニューから「 Compare with」→「 Other revision」の順 に選択します。

 

9.

上部のペインの左側で最初のリビジョン(もっとも小さい数字)を選択し、右側で作業中コピーを選択します。 下部ペインでノードを開き、IDEに現在保存されているコピーと初期リビジョンの間での変更点を確認します。

 

10.

変更を保存します。

トピック・リストに戻る

表テンプレートの作成

ここでは、表テンプレートを作成して、将来的にすべての表にデフォルトで監査列が追加されるように します。 以下の手順に従います。

1.

アプリケーション・ナビゲータで「 PhysicalModel」ノードを右クリックし、コンテキス ト・メニューから「 New」を選択します。

 

2.

新規ギャラリで、「 Database Tier」→「 Offline Database Objects」カテゴリを選択し、「 Offline Database」項目 を選択します。

OK」をクリックします。


3.

Create Offline Databaseダイアログで、オフライン・データベース名として DB_TEMPLATESと 入力し、デフォルト・スキーマに TEMPLATESと入力します。

OK」をクリックします。


4.

新しいデータベースがナビゲータに表示されます。


5.

DB_TEMPLATE」を右クリックし、コンテキスト・メニューから「 Properties」 を選択します。

 

6.

Edit Offline Databaseダイアログで、「 Default Templates」 ノードを選択します。 デフォルト・スキーマスキーマの両方に「 TEMPLATES」 を選択し、オブジェクトに「 Tables」を選択します。

Nameフィールドの横にある Addボタン「  」をクリックします。

 

7.

Create TableダイアログでNameに Template_Tableを入力したら、既存 の Column1列のタイプを「 Number」に変更し、「 Primary Key」を選択します。

Advanced」チェック・ボックスを選択します。


8.

Primary Key」ノードをクリックし、 COLUMN1が 主キーになっていることを確認します。

 

9.

Column Sequences」を選択し、「 Populate Column from a Sequence on insert」をクリックします。 Sequence NameとTriggerに生成された名前は、デフォルトのままにします。 シーケンスとトリガーには、 TEMPLATE_TABLE_xxxのように表名を反映した名 前が付けられています。

OK」をクリックします。 再度「 OK」をクリックします。

 

10.

変更を保存します。

 

11.

TEMPLATE_TABLE_TRG」エントリをダブルクリックして、ファイル・コンテンツを 編集します。

生成されたPL/SQLコードを確認します。

 

12.

オフライン・データベース間の依存関係を作成します。「 FOD_Physical」ノードを右ク リックし、コンテキスト・メニューから「 Properties」を選択します。

 

13.

Edit Offline Databaseで、「 Dependencies」を選択して、 Addボ タン「  」をクリックします。


14.

DB_TEMPLATES」データベースが選択されていることを確認し、 「 OK」 をクリックします。

これにより依存関係が作成されるため、DB_TEMPLATESオフライン・データベースのテンプレートをFOD_Physicalで使用できます。
Edit Offline Databaseダイアログで、「 Default Templates」と「 Tables」 を選択します。 ドロップダウン・リストから、スキーマに「 TEMPLATES」を選択し、名前に「 TEMPLATE_TABLE」 を選択します。

OK」をクリックします。


15.

FOD_Physicalダイアグラムを開きます。 はじめに作成したすべての表には監査列( CREATED_BYCREATION_DATELAST_UPDATED_BYLAST_UPDATE_DATE) が含まれています。テンプレート表にも、これらの列を作成する必要があります。


16.

TEMPLATE_TABLE」をナビゲータからドラッグしてダイアグラム上にドラッグします。

 

17.

ダイアグラムの WAREHOUSES表へ移動し、 [Ctrl]を押しながらクリッ クして 4つの監査列を選択します。 監査列が表示されない場合、マウスを表の右側に動かして縦方向のスクロールバーを表示します。 監査列が表示されるまで、下方向にスクロールします。

 

18. 選択した4つの列をダイアグラムにドラッグして [Ctrl]を押しながらテンプレート表に ド ロップし、列をコピーします。

変更を保存します。

表に列をドラッグする場合、次のように [Ctrl]または [Shift]を 使用してドロップする必要があります。

  • 列のコピー: ドラッグして [Ctrl]を押しながらドロップ
  • 列の移動: ドラッグして [Shift]を押しながらドロップ
19.

ダイアグラムの「 TEMPLATE_TABLE」を右クリックし、「 Cut」 を選択してダイアグラムから削除します。 ここまでで、テンプレート表を使用して新規表を作成する準備が整いました。

 

20.

ダイアグラムに新規表を作成して、テンプレートをテストします。 コンポーネント・パレットから「 Table」 ボタンをドラッグしてダイアグラムにドロップします。デフォルト列が作成されることを確認します。

 

21.

Specify Locationダイアログで、「 Application Project」と「 FOD_Physical」 オフライン・データベースを選択します。

OK」をクリックします。

 

22.

表の作成にはテンプレート表の定義が使用されるため、 監査列と主キーが追加されています。 ナビゲータには シーケン ス・ファイルと トリガー・ファイルが作成されていることを確認します。

トピック・リストに戻る

データベース・レポートの作成

JDeveloperでは幅広い組込みレポートが提供されていますが、独自にカスタマイズしたレ ポートを作成することもできます。 監査列を含まない表を表示するレポートを作成するには、以下の手順を実行します。

1.

アプリケーション・ナビゲータで、「 PhysicalModel」プロジェクトを右クリックして、 コンテキスト・メニューから「 New」を選択します。

 

2.

New Galleryにおいて、Categoriesリストの「 Database Tier」を 開き、「 Offline Database Objects」を選択します。 Itemsリストで「 Report」 を選択し、「 OK」をクリックします。


3.

Create Reportダイアログで、File Nameに missing audit columnと 入力します。


4.

Offline Databaseタブで、「 FOD_Physical」を選択します。


5.

Query Definition」タブをクリックします。 次のステートメントをコピーしてSQLペインに貼り付けます。

SELECT
T.NAME
FROM
DB_TABLES T
WHERE
NOT EXISTS (SELECT
1
FROM
DB_COLUMNS C
WHERE
C.PARENT_ID = T.ID AND C.NAME = 'CREATION_DATE')

この問合せにより、CREATION_DATE列を含まない表の名前が返されます。 「 Check Syntax」ボタ ンをクリックし、問合せを検証します。

 

6.

Query Definition」ノードを開き、すべての子ノードを開いてどのように問合せを 構築するかを確認します。

 

7.

Publish Report」(デフォルトでは、レポートはログ・ウィンドウのみに出力されま す)と「 HTML」を選択し、Output File Nameに missingauditcolreportと 指定したら、残りはすべてデフォルトのままにします

OK」をクリックします。


8.

アプリケーション・ナビゲータに新しいレポート定義が表示されます。 変更を保存します。 「 missing audit column」を右クリックし、コンテキスト・メニューから「 Run」を選択します。

レポートの実行が開始されます。

 

9.

ログ・ウィンドウにレポート結果が表示されます。

 

10.

先ほどのステップで'HTML'を指定したため、レポートが実行されるとHTMLバージョンのレポートが生成され、アプリケーション・ ナビゲータに表示されます。 「 missingauditcolreport」をダブルクリックして開きます。

この後で、CSSを追加してレポートを編集し、チーム・メンバーへ配布するか、または中央で公開することもできます。

トピック・リストに戻る

デー タベース内のPL/SQLオブジェクトの作成とデバッグ

JDeveloperを使用すると、オブジェクト・タイプ、パッケージ、プロシージャ、ファンク ション、トリガーを含むデータベース内のストアドPL/SQLを作成、編集、テスト、デバッグできます。 これには、JDeveloper内にファイルとしてSQLスクリプトを作成し、そのスクリプトをデータベースに対して実行する方法があります。 あるいは、データベース内に直接PL/SQLオブジェクトを作成する方法もあります。

以下のトピックでは、注文項目レコードのレイアウトを定義するオブジェクト・タイプ order_items_recを作成します。 次に、 order_items_recによって定義された注文項目レ コードを返すファンクション get_order_itemsを 含むパッケージを作成します。 最後に問合せを実行して、 order_items_recに 値を生成するパッケージ本体を作成します。 JDeveloperのデバッグ機能を使用して、パッケージをテストします。

 FODへのデバッグ権限の付与
 SQLス クリプトの実行によるオブジェクト・タイプの作成
 PL/SQLパッケージの直接的な作成
 PL/SQLファンクションのテストおよびデバッグ

トピック・リストに戻る

FODへのデバッグ権限 の付与

デバッグ機能を使用可能にする前に、関連する権限をFODに付与する必要があります。

1.

FODに権限を設定するには、メイン・メニューから「 Tools」→「 Database」 →「 SQL Worksheet」を選択します。

 

2.

Select Connectionダイアログで、「 OK」をクリックして FOD(DBModeling)接 続を受け入れます。


3.

SQL Worksheetウィンドウで、 connect system/oracle; と入力します(システム名およびパスワードを提供することで、使用している環境でDBA文 を発行できるようにします)。 次に、 grant debug connect session to fod; と入力します。


4.

Execute Scriptアイコン「  」をクリックし、2つの文を実行します。

Script Outputウィンドウにエラーが表示されていないことを確認します。

トピックに戻る

トピック・リストに戻る

SQLスクリプトの実行 によるオブジェクト・タイプの作成

1.

SQLスクリプトを作成するには、アプリケーション・ナビゲータで「 PhysicalModel」 プロジェクトを右クリックし、「 New」を選択して新規ギャラリを開きます。

 

2.

Categoriesリストで「 Database Tier」を開き、「 Database Files」を選択して、Itemsリストで「 SQL File」を選択します。 「 OK」 をクリックします。


3.

Create SQL Fileダイアログで、File Nameを order_items_rec.sql に 変更して、「 OK」をクリックします。

コード・エディタ内に新しい空のファイルが開きます。


4.

以下のコードをコピーして、ソース・ペインに貼り付けます。


REM
REM Create object ORDER_ITEMS_REC
REM

CREATE or REPLACE type ORDER_ITEMS_REC as object
(
ORDER_ID NUMBER(15),
LINE_ITEM_ID NUMBER(3),
PRODUCT_ID NUMBER(15),
QUANTITY NUMBER(6),
UNIT_PRICE NUMBER(8,2),
CREATED_BY VARCHAR2(60),
CREATION_DATE DATE,
LAST_UPDATED_BY VARCHAR2(60),
LAST_UPDATE_DATE DATE,
OBJECT_VERSION_ID NUMBER(15)
);
/
show errors;

 

SQL Worksheet」タブをクリックし、「 FOD」 接続を選択します。

Run Script」アイコンをクリックします。


5.

Script Outputウィンドウにエラーが表示されていないことを確認します。


Save All」をクリックして変更内容を保存します。


6.

接続ナビゲータのApplication Resourcesペインで「 Database」→「 FOD」 →「 Types」の順にノードを開き、新しいオブジェクト・タイプ ORDER_ITEMS_REC を確認しま す。

トピックに戻る

トピック・リストに戻る

PL/SQLパッケージ の作成

上のトピックでは、最初にスクリプトを作成し、そのスクリプトをデータベースに対して実行すること で、PL/SQLオブジェクトを作成する方法を説明しました。 このトピックでは、このデータベースにPL/SQLパッケージORDER_ITEMS_FETCHを直接作成します。

1.

Databases」タブをクリックして、データベース・ナビゲータを開きます(はじめて表示す る場合は、メイン・メニューから「 View」→「 Database」→「 Database Navigator」を選択します)。 データベース・ナビゲータで、「 DBModeling」→ 「 FOD」の順にノードを開きます。 「 Packages」ノードを右クリック し、コンテキスト・メニューから「 New Package」を選択します。

 

2.

Create PL/SQL Packageダイアログで、パッケージ名を ORDER_ITEMS_FETCHに 設定し、「 OK」をクリックします。

コード・エディタにORDER_ITEMS_FETCHパッケージが表示されます。

 

3.

コード・エディタで、 ORDER_ITEMS_FETCHパッ ケージに既存する2行の間に次のコードを入力し、get_order_itemsファンクションを作成します。

FUNCTION get_order_items
(order_id_no IN NUMBER,
line_item_id_no IN NUMBER)

RETURN ORDER_ITEMS_rec;

 

4.

ツールバーの「 Save」アイコンをクリックして、修正したパッケージを保存します。 ナビゲータにパッケージが表示され、パッケージがデータベースに格納されたことが分かります。

 

5.

ORDER_ITEMS_FETCH」エントリを右クリックし、コンテキスト・メニューから「 Create Body」を選択します。

 

6.

コード・エディタにパッケージ本体のテンプレートが開きます。

 

7.

コード・エディタの ORDER_ITEMS_FETCH パッ ケージ本体の部分に、問合せを実行して order_items_found レ コードに値を移入する次のコードを入力します (イタリック体ではない太字のコードのみを入力してください。 イタリック体のコードはすでに入力されていますが、コードの場所を示すために以下に記載されています)。

PACKAGE BODY ORDER_ITEMS_FETCH AS

FUNCTION get_order_items(order_id_no IN NUMBER,
line_item_id_no IN NUMBER)
RETURN ORDER_ITEMS_rec AS
order_items_found order_items%rowtype;
order_items_rtn order_items_rec;

BEGIN
/* TODO implementation required */
SELECT *
INTO order_items_found
FROM order_items
WHERE order_items.order_id=order_id_no
-- and order_items.line_item_id = line_item_id_no;

order_items_rtn := order_items_rec
(order_items_found.order_id,
order_items_found.line_item_id,
order_items_found.product_id,
order_items_found.quantity,
order_items_found.unit_price,
order_items_found.created_by,
order_items_found.creation_date,
order_items_found.last_updated_by,
order_items_found.last_update_date,
order_items_found.object_version_id
);
RETURN order_items_rtn;
END get_order_items;
END ORDER_ITEMS_FETCH;

( RETURN NULL;行は削除してください。)

 

8.

コード・エディタ・ウィンドウで、コメント行の下に
and order_items.line_item_id = line_item_id_no;
という文を入力し て、JDeveloperのコード・インサイト機能の使用法を確認しましょう。
and order_items.と入力するとポップアップ・ウィンドウが表示されます。ここから適切な 構文を選択するだけで、文を完成できます。

 

9.

Compile」アイコンをクリックして、パッケージ本体をコンパイルします。

トピックに戻る

トピック・リストに戻る

PL/SQLファンク ションのテストおよびデバッグ

1.

ブレーク・ポイントを設定するために、コード・エディタの左余白内で Return文の横をクリック します。

 

2.

データベース・ナビゲータで、「 ORDER_ITEMS_FETCH」パッケージを右クリックし、 コンテキスト・メニューから「 Compile for Debug」を選択します。

 

3.

データベース・ナビゲータで、「 ORDER_ITEMS_FETCH」パッケージを右クリックし、 コンテキスト・メニューから「 Debug」を選択します。

 

4.

Debug PL/SQLダイアログで以下の変更を行い、注文ID番号 1001および明細項目ID 番号 2が表示されるようにします。


変更前
ORDER_ID_NO := NULL;
変更後
ORDER_ID_NO := 1001;


変更前
LINE_ITEM_ID_NO := NULL;
変更後
LINE_ITEM_ID_NO := 2;


変更前
--DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
変更後(コメントを外す)
DBMS_OUTPUT.PUT_LINE('v_Return = Product_id: ' || v_Return.product_id || ' Qty: ' || v_Return.quantity ||' Price: '|| v_Return.unit_price);

OK」をクリックします。 Windowsセキュリティの重要な警告がポップアップ表示されたら、「 ブロックを解除する」を選択します。

 

5.

Debugging Logウィンドウを確認すると、パッケージの実行が停止されていることがわかります。

Debugging LogウィンドウのDebugタブの横にある「 Data」タブを選択するか、 メイン・メニューから「 View」→「 Debugger」→「 Data」 の順に選択してこのタブを開きます。

 

6.

Dataペインで、「 ORDER_ITEMS_FOUND」ノードを開きます。 取得した行のすべての値が表示されます。

 

7.

Debugging」ツールバーで、「 Resume」ボタン をクリックしてパッケージの実行を終了します。

 

8.

Debugging Logウィンドウに、 ORDER_ITEMS_FETCH パッケー ジの get_order_items()ファンクショ ンの出力が表示されます。

 

9.

コード・エディタ・ウィンドウの左余白にある赤いボタンをクリックして、ブレーク・ポイントを削除します。次に「 Compile」 ボタンを使用して、パッケージを再コンパイルします。

 


これで、このOBEは完了です。

トピックに戻る

トピック・リストに戻る

まとめ

このチュートリアルでは、JDeveloperのデータベース機能を使用しました。 具体的には、クラスをモデル化し、データベース・ダイアグラムを使用してデータベース定義に変換し、新規表テンプレートを作成しました。次に、データベー スのオンライン・オブジェクトをモデル化し、ダイアグラムを使用してこれらに変更を加えました。 バージョニング・ツールとしてSubversionを使用し、各種のコンポーネント定義を比較しました。 また、データベースに問合せを行うカスタマイズ・レポートを作成しました。 次に、それらのオフライン変更をデータベースに反映するSQLスクリプトを作成しました。 さらに、SQLスクリプトを実行してデータベース内にオブジェクト・タイプを作成し、PL/SQLパッケージをデータベース内に直接作成して、 JDeveloper内でテストを実施しました。

このチュートリアルで学習した内容は、以下のとおりです。

 UMLクラス・モデルを使用した論理モデリング
 クラス・モデルから データベース・モデルへの変換
 データベース定義から データベース・モデルへのリバース・エンジニアリング
 アプリケーションのバージョニング
 論理モデルと物理モデルの比較、バージョン管理対象コンポーネントの バージョン間での比較
 表テンプレートの作成
 データベース内での PL/SQLオブジェクトの作成

 

トピック・リストに戻る

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