10章。
・DAOとJPAのコード比較が。JPAの方が微妙に短い、が、かなり似ている。
JPAはコードとは別に定義ファイル(persistence.xml)が必要。META-INFに置く。
 JDBCドライバのクラス名とかDBへのログイン用情報とかトランザクション参加方法とか
・DAOパターンの場合は
 DAOクラス=DBにアクセスしてDTOを返す
 DTOクラス=ROW1つ分の情報
JPAの場合は
 エンティティ操作クラス(=DAOクラスに相当)。ユーザがプログラム。エンティティマネージャを呼んでエンティティを取得したり。
 エンティティマネージャがSQLを発行する。
 エンティティクラス(=DTOに相当)
・リレーションシップの無いエンティティを使った例
・フィールドとカラムの対応は、エンティティクラスのアクセサメソッド前のアノテーションに記述する(XML定義ファイルではなくソースに書くのでこれは良い)。
・エンティティマネージャの取得方法は、
 1.コンテナ管理 2.AP管理の二種類。persistence.xmlに記述。
 EJB中で使うなら前者。サーブレットで使うなら後者が良い。理由はP207〜参照。エンティティマネージャはスレッドセーフではない。
トランザクション
 1.JTAに参加 2.リソースローカルTXに参加 がある。persistence.xmlに記述。EJBなら前者が、サーブレットなら後者がよさげ。
・コールバックメソッド
 SQL発行する前後にJPAエンジン側から呼ばれるメソッド。
 DBへのSQL発行を契機に呼ばれる(SQL発行はJPAエンジンが色々まとめて最適化して行う)。INSERT発行前とかSELECT発行後とかいくつか。

うーむ、結構面倒そう。JPAは余り流行らなそうな予感。DAOでいいじゃんみたいな。エンティティオブジェクト/エンティティマネージャのライフサイクルやスコープで何かハマりそうな気がする。でもHibernateは流行りつつあるというし需要はあるんだろうな。