EX297

提供終了 - RedHat 認定スペシャリスト試験 - Persistence -

概要

試験の説明

注:この試験および認定の提供は、終了しました。

Red Hat 認定スペシャリスト試験 - Persistence - は、Java Persistence API (JPA) と JBoss® Hibernate® を使用する Java™ アプリケーションを作成、保守する実務能力をテストするものです。

Red Hat 認定スペシャリスト試験 - Persistence - 認定資格は、Java™ Persistence API (JPA) と JBoss Hibernate の使用に関連した実務能力を受験者が有することを証明するものです。JPA は、リレーショナルデータを管理するための Java プログラミング言語フレームワークです。Hibernate は、JPA を実装するハイパフォーマンスなオブジェクトリレーショナル永続化およびクエリサービスです。

Red Hat JBoss 認定開発者試験のツール、環境、要件を確認してください。

試験の対象者

Red Hat 認定スペシャリスト - Persistence - は次の方々を対象としています。

  • 熟練した Java アプリケーション開発者およびアーキテクト
  • ビジネスコンポーネントおよびデータベースの開発者

受験の前提条件

  • Red Hat Enterprise Linux 環境での作業に精通していること
  • Red Hat 認定スペシャリスト試験 - Persistence - (EX297) の試験内容を確認していること

この試験の受験者は、同試験を受験する前に Red Hat 認定 JBoss 開発者 (RHCJD) の認定を取得することが推奨されますが、必須ではありません。

試験の内容

試験の学習ポイント

以下に、試験の主な作業領域を示しますので、試験の準備にご活用ください。Red Hat は、認定試験の内容を追加、変更、削除する権利を留保します。変更する場合は、事前にお知らせいたします。

試験のタスク

Red Hat 認定スペシャリスト試験 - Persistence - の受験者は、JPA と Hibernate を使用して以下のタスクを実行できる必要があります。タスクに関連した推奨参考資料の一覧も掲載しました。学習に活用してください。

1 つのテーブルまたはオブジェクトのマッピング
  • 値が生成される仕組みやタイミングなど、ID ジェネレーターの動作を理解する
  • 主キーのマッピング方法および以下の方法を理解する
    • 生成されたキーを使用する
    • シンプルなビジネスキーをマッピングする
    • 複合キーをマッピングする
  • オブジェクトの ID とビジネスの等価性を理解する
  • テーブル名、列名、列の幅、列の属性 (Null 許容、一意、型など) など、
    データベース固有の情報を設定する
  • 既存の Java オブジェクトを、JPA/Hibernate を使用して永続オブジェクトに変換する
  • 基本 JPA データ型を対応するデータベースの型にマッピングする
  • 新しい Java 永続オブジェクトを作成して、指定された既存のデータベーステーブルをマッピングする
  • 遅延ロードと即時ロードの使用方法と使用する条件を理解する
  • コレクションと値の型の最適なマッピング戦略を理解し、使用する
  • 以下のような、Java/オブジェクトのモデル固有のプロパティと動作を操作する
    • シリアル化
    • 一時的プロパティ
    • 生成および計算されたプロパティ
    • イミュータブル・プロパティ
    • 値の型
    • 共依存プロパティ (プロパティの有効な値が別のプロパティの値に依存する)
JPA/Hibernate によるオブジェクト関係のマッピング
  • 以下のような、関係のマッピング方法を理解する
    • 値の関係 (has-a 詳細オブジェクトなど)
    • 親子関係
    • 1 対 1 関係 (単方向と双方向の両方)
    • 多対 1 と 1 対多の関係 (単方向と双方向の両方)
    • 多対多の関係 (単方向と双方向の両方)
  • 以下のような、デフォルトのマッピング動作を理解する
    • 外部キー名
    • 関連テーブル名
  • 外部キーの使用方法を理解し、リレーションシップの作成時に各テーブルを結合する
  • リレーションシップに基づく複合主キーのマッピング方法を理解する
  • JPA/Hibernate コレクション (セット、マップリスト、バッグ) を理解し、それらをオブジェクトおよびテーブルのリレーションシップに
    マッピングする方法を理解する
  • さまざまなコレクションによるパフォーマンスへの影響を理解する
  • 遅延ロードと即時ロードを使用する方法と条件、およびそれぞれがパフォーマンスとコードに与える影響を
    理解する
  • 所定の既存のテーブルと関係の組み合わせから、データベースに一致する永続 Java オブジェクトグラフを作成する
  • 各種の関連付けを含めて既存のオブジェクトモデルを永続ストアにマッピングする
  • 所定のビジネスプロセスに対して最適なロード方法を決定する
JPA/Hibernate による階層型オブジェクトのリレーションシップのマッピング
  • JPA/Hibernate を使用してさまざまなオブジェクト階層を表現する方法を理解する
  • 既存の Java オブジェクト階層を、JPA/Hibernate を使用して永続オブジェクトに変換する
  • テーブル関係の既存のセットをオブジェクト階層として表現する (たとえば、
    預金口座、クレジットカード、貸付勘定)
  • ポリモーフィックなクエリおよび関連付けを理解する
  • さまざまな継承手法のメリットと制限を理解する
  • さまざまなオブジェクト階層に対する最適なデータベース表現を分析し、決定する
トランザクション動作 (ACID) を理解する
  • 以下の環境でトランザクション・コンテキストを取得して使用する
    • Java EE/CMT
    • Java EE/BMT
    • Java SE、JPA API を使用
  • Java EE で永続コンテキストをトランザクションにバインドする方法を理解する
  • EJB3 によるトランザクション・コンテキストの伝播を理解する
  • 永続コンテキストレベルでのトランザクションのロールバックの結果を理解する
  • トランザクションの並行処理のリスクを理解する
  • データ損失/破損とパフォーマンスのトレードオフを評価する
永続オブジェクトの取得
  • JPA/Hiibernate のロード方法を理解する
    • 遅延ロード
    • サブセレクトロード
    • 一括ロード
  • 高度なクエリオプションを理解し、使用する
    • HQL/JPA QL
    • Criteria API
    • ネイティブクエリ (SQL)
  • ランタイム即時フェッチ機能を使用する
  • 名前付きパラメーターを使用する
  • LazyInitializationException を予測して回避する
  • JPA/Hibernate のパフォーマンスを分析して改善する
  • JPA 楽観的ロックと Hibernate 悲観的ロック拡張機能を理解し、使用する
永続オブジェクトの操作
  • 次のようなエンティティの状態を理解する
    • 一時的
    • 永続的
    • 接続済み
    • 分離済み
    • 削除済み
  • エンティティ/エンティティグラフの状態を JPA API を使用して変更する方法を理解する
  • 永続性コンテキストのライフサイクルと、管理対象のエンティティへの影響を理解する
  • JPA/Hibernate 一括処理機能を適用する
    • API 使用パターン
    • DML クエリ
  • 最適な実装とカスケード設定を決定して適用し、オブジェクトグラフを操作する
  • 一括処理を使用するタイミングを評価する

知っておくべきこと

ドキュメントとトレーニング

試験中に利用できるドキュメントは、試験対象のバージョンの JBoss Enterprise Application Platform の公式ドキュメントと、製品に付属するサンプルファイルや追加ドキュメントのみです。製品に通常付属するものも含まれます。

試験中に jboss.org や hibernate.org などの Wiki を利用することはできません。これらの Wiki は有益な資料であり、試験に関連した内容が掲載されている場合がありますが、その形態から試験中の利用には適していません。試験の対象は受験者であり、Wiki の読者や編集者ではありません。

試験にハードコピーおよび電子文書を持ち込むことは禁止されています。ノートや書籍、その他の資料も持ち込めません。インターネットアクセスも厳しく制限されます。これらの事項に注意して学習を進めてください。

環境

試験で扱う環境は Red Hat Enterprise Linux® 5.4 システムです。このため、Linux または UNIX の使用経験があると役立ちます。ただし、この試験はオペレーティングシステム固有のスキルを問うのではく、JPA/Hibernate に関するスキルをテストすることを目的としているため、Linux の幅広い経験は必要ありません。作業のための完全なデスクトップ環境が用意され、参照用の基本コマンドリストと、Red Hat Enterprise Linux に付属する man ページやその他ドキュメントが提供されます。

Linux のスキルを練習する環境として、Fedora を無料で使用できます。Live CD バージョンを使用すると、Fedora をコンピュータにインストールせずに操作できます。Red Hat Enterprise Linux と完全に同じではありませんが、求められる習熟度には十分な環境です。

試験の形式

Red Hat 認定スペシャリスト試験 - Persistence - は 100% 実技形式の試験です。受験者は、詰め込んだ知識をただ思い出すのではなく、タスクを行って知識とスキルを示すことが求められます。一般的な IT の認定試験では、A、B、C、または D を選択しなさい、あるいは、もっと不人気な「該当するものすべてを選びなさい」という形式の問題が出題されます。Red Hat 認定スペシャリスト試験 - Persistence - では、そのような問題は出題されません。それどころか、問題はまったく出されません。その代わり、実環境が用意され、受講者は一連の実際のタスクを実行します。たとえば、JPA マッピングアノテーションに関する一連の問題に解答するのではなく、実際に継続的な関連付けを作成して保守するように求められます。そのため、オンライン上に存在する「ブレインダンプ」やその他の情報はどれも疑いを持って見るのがよいでしょう。この試験で唯一最良の情報ソースは本ドキュメントです。

Red Hat 認定スペシャリスト試験 - Persistence - の試験時間は 4 時間です。試験開始に先立って受験者本人確認と情報収集のための時間がとられます。

試験の環境

開発ツール

デスクトップ環境に加えて、インストールおよび設定済みの JBoss Developer Studio 3 (JBDS) が提供されます。この試験は JBDS の試験ではないため、試験のタスクを行うのに JBDS の知識や使用方法は問われません。ただし、JBDS は JPA/Hibernate アプリケーションの開発と保守のための優れたツールであることから、JBDS の経験とスキルがあると確実に試験に役立つでしょう。サポート対象の JBDS を利用できない場合は、無料版をダウンロードできます。まだ Red Hat に登録していない場合は、無料の Red Hat アカウントを作成する必要があります。無料ダウンロードのための Red Hat への登録を希望しない場合は、標準の Eclipse ディストリビューションに含まれる JBoss Tools 4 プラグインが試験の練習に適しています。

試験で使用するプロジェクトは Maven で作成されています。JBDS を使用したくない場合、標準のテキストエディター (gedit や vi など)、コマンドライン、Maven を使用できます。試験は閉じた環境で実施され、Maven はオフラインモードで稼働します。ローカル環境にインポートされていない Maven のリポジトリやプラグインを使用することはできません。

作業ディレクトリ

試験の開始時には、デフォルトの JBDS ワークスペースに、試験で使用する 1 つ以上のプロジェクトディレクトリが含まれています。JBDS を開発に使用する必要はありませんが、デフォルトのワークスペース・ディレクトリと、すべてのタスク用に提供されるプロジェクトディレクトリは、使用する必要があります。つまり、提供されたディレクトリ構造ですべてのコードとリソースの開発を行い、ディレクトリ構造と整合性のとれたものにする必要があります。

コーディング標準

これは実践的な実技試験であるため、タスクを実行するにあたりコードを作成する必要があります。さまざまな企業が異なるコーディング標準を使用しており、現実の環境と同様に、ローカルのコーディング標準に従うことが求められます。試験のコーディング標準についての情報を以下に挙げますので、準備に役立ててください。この情報は試験中にも提供されます。試験の目的からすると、自分はプロジェクトを完了するために新しく採用された JPA/Hibernate 開発者であると考えてみるのがわかりやすいでしょう。残念ながら当初の開発者はプロジェクトを途中で放棄して連絡がとれない状態です。前任者が残したコードの続きを記述し、時間内にできるだけ完成させる必要があります。

コードは適切に文書化され、コード内には多くの TODO が記されており、作業の指示が示されています。ただし、Javadoc と TODO だけでは不十分です。タスクの説明を読み、TODO を実行する前に何が要求されているかを理解する必要があります。タスクの説明、UML/PDM 図、および Javadoc/TODO の間に矛盾があると思った場合は、必ずタスクの説明に従うようにします。

以下は、作業時に注意すべき主なポイントです。

  • コード形式は重要ではありません。タブやスペースを使用するかどうか、および中かっこの位置は評価に影響しません。
  • クラスのマッピングには、XML ファイル、フィールドアノテーション、またはプロパティアノテーションのいずれを使用してもかまいません。既存のコードでは少数のフィールドレベルアノテーションを使用していますが、任意のマッピング形式に変更できます。
  • クラスの多くは通常とは異なる形で編成されています。フィールドや関連メソッドは一緒にグループ化されています。これは通常とは大きく異なり、推奨される方法ではありません。コード内でフィールドや関連メソッドを見つけるのに前後に検索する手間を省き、1 つのアイテムの作業がしやすいように、このような形をとっています。通常のコード構造が好ましければ、クラスメンバーをソートして構いません。ヒント:JBDS では、青い TODO マーカーはエディターウィンドウの右側に示され、アウトラインビューのプロパティリストとともに、これらのクラスを迅速にナビゲートするのに利用できます。
  • 現実とは異なり、コメントと例外メッセージは重要ではありません。試験は機械で採点されるため、コメントやメッセージは完全に無視されます。
  • コードの品質とベストプラクティスが重要です。常にベストプラクティスを使用する必要があります。これが欠落しているか不十分な場合は減点の対象になると考えてください。たとえば、Java のベストプラクティスではフィールドメンバーを公開しないため、オブジェクトプロパティに標準の JavaBeans の getter および setter を必ず使用します。
  • 試験のシナリオで使用されるプロジェクトは、他の部署の他のアプリケーションと併せて設計されています。タスクの説明やコードの TODO で明示的に指示されていないかぎり、既存のメソッドのシグネチャを変更してはいけません。このルールの唯一の例外は、シグネチャをより具体的にする (サブクラスや特定のジェネリックを使用する) ことが適切である場合です。たとえば、適切な場合は、Collection{cke_protected}{C}%3C!%2D%2D%3F%2D%2D%3E を List に置き換える必要がありす。
  • フィールド、プロパティ、およびメソッドは必要に応じて追加できます。
  • プロジェクトでは永続エンティティに重点が置かれており、コントローラー/サービスレイヤーへの入力はないため、永続エンティティのコードを慎重に作成することが求められます。つまり、ビジネスロジックがオブジェクトの一貫性を壊すことがないよう、エンティティメソッドで保護する必要があります。たとえば、Null 値を許容しないプロパティに Null 値が渡された場合、そのセッターは NullPointerException をスローします。
  • 特に指定がない限り、すべてのエンティティは永続性エンジンによって自動生成されるデータベース主キーを使用する必要があります。
  • 内部の問題によりメソッドが例外をスローする必要がある場合は、必ず RuntimeException を使用します。ビジネス固有の例外を作成してはいけません。たとえば、メソッドに無効な引数が渡されることが問題の場合は、IllegalArgumentException を使用できます。オブジェクトモデルや永続ストアの状態の不整合が問題である場合は、IllegalStateException を使用できます。当然ながら、適切な場合には常に NullPointerException を使用できます。特に明記されていないかぎり、オブジェクトグラフの関連エンティティに変更を自動的に伝播する際に、推移的な JPA 永続性機能を使用しないでください。これまでにも、多くのビジネスレベル開発者がこの機能で混乱しています。この機能を不適切に使用すると、パフォーマンスや信頼性に関する重大な問題を引き起こすおそれがあります。最後に注意すべき点として、成果物がコンパイルできない場合や、正しく実行できない場合は、評価されません。特に、永続的な関連付けが壊れていると、すべての永続アクションが動作しない可能性があります。難解な関連付けは他の関連付けを妨害しないようにコメントアウトしておくことをお勧めします。テストプロジェクトには適切に選ばれた JUnit テストが含まれているため、タスクの完了後にテストスイート全体を実行することをお勧めします。ただし、含まれている JUnit テストは試験の対象ではないため、作成したコードがテストをパスしたとしても、それで試験の最高評価を獲得できるわけではありません。

試験結果と通知方法

試験の正式な結果は、Red Hat Certification Central から送付されます。試験官やトレーニングパートナーが受験生に直接結果を報告することは認められていません。通常、試験結果は米国の 3 営業日以内に送付されます。

試験結果にはセクションごとの得点のみが記載され、個々の項目ごとの成績は通知されません。また、それに関するお問い合わせには回答しかねますので、あらかじめご了承ください。