JPA

JPAを使ったデータアクセスでポイントとなる永続コンテキストについて

先週書いたエントリJava EE6標準の範囲でフルスタックのWebアプリケーションが簡単に作成できることを確かめてみました。 - 達人プログラマーを目指してで、Java EE6の標準仕様を使うだけで、かなりシンプルにデータのCRUD処理を行うアプリケーションが作成…

Java EE6標準の範囲でフルスタックのWebアプリケーションが簡単に作成できることを確かめてみました。

Java EE6でさらに開発は容易になった? 以前JavaEE標準の進化から最近の業務アプリケーション開発手法の変遷について考える - 達人プログラマーを目指してにてJava EE標準の開発モデルの進化について説明しました。10年前の相当面倒だったJ2EEの開発モデルと…

JBoss AS5.1上でJPAを完全にSpring駆動で実行させる方法

JPAプロバイダーを起動するしくみがJavaEE5対応のアプリケーションサーバに組み込まれているため、JPAの仕様に従って、META-DATA/persistence.xmlファイルが格納されていると、アプリケーションサーバーによって読み込まれて処理されます。読み込まれたJPAの…

O/Rマッピングで緩和されるインピーダンスミスマッチには静的と動的の側面がある

一般的な業務アプリケーションではデータを永続化するために、RDBMS(関係データベース管理システム)を利用します。RDBMSでは大量のデータを効率的に検索したり、集約してレポートを作ったりすることが得意ですし、一般的に業務システムで求められるトラン…

JPAの@Embeddableの使い道

JPAには@Embeddableというアノテーションがありますが、このマッピング機能をうまく活用しているチームはどれくらいあるのでしょうか?私が今まで適用してきた使い方は結局以下の2通りの使い方のいずれかに集約できると思います。 1.属性の多い巨大なテーブ…

JPA2仕様の標準的な参考書

Pro JPA 2: Mastering the Java™ Persistence API (Expert's Voice in Java Technology)作者: Mike Keith,Merrick Schincariol,Jeremy Keith出版社/メーカー: Apress発売日: 2009/11/25メディア: ペーパーバック クリック: 11回この商品を含むブログ (1件) …

Seamの会話の開始、終了の指定方法とEntityManagerのflushモードについての注意点

Seamの場合、EntityManagerをSeam管理にして会話スコープと同期させることで、JPAの永続コンテキストをアプリケーショントランザクションの間持続させることが容易に可能です。たとえば、データ更新ウィザード画面を開始してから、最終画面の更新ボタンをを…

Hibernateのlazy関連用Proxyについての注意点

JPAの仕様では@ManyToOneなど関連先が1個になる関連はデフォルトでeager関連となります。特に、JPAのプロバイダーとしてHibernateを利用する場合、eager関連はデフォルトでOUTER JOINされてしまうため、多くの関連を定義すると一気に大量のJOINが行われてし…

Seam Application Frameworkを使ったデータアクセスについて

名前が紛らわしいのですが、Seamの中にCRUD処理を簡易化するためのフレームワークが存在しており、Seam Application Frameworkと呼ばれています。seam-genやJBoss Toolsで自動生成したときに使われるXXListやXXHomeといったクラスが継承しているフレームワー…

エンティティクラスのequalsメソッドとhashCodeメソッドを定義しなくてはならない場合

Seamの便利な機能の一つにタグを使って変換を行い、エンティティのリストを使って直接画面の選択項目を描画させる機能があります。たとえば、アクションクラスのどこかで @SuppressWarnings("unchecked") @Factory(scope = ScopeType.APPLICATION) public Li…

JBoss Tools3.1.1で生成した状態でJBoss AS 5.1でJPAを使えるようにするための追加手順

JBoss ToolsのSeam Webプロジェクトを新規に作成した状態のままではJBoss AS 5以降でJPAが正しく実行できません。これも知らないと結構はまってしまうところですね。Hello Worldの実行は成功したけれど、JPAでDBアクセスができないという場合は、以下のポイ…