EntityManager再整理

http://d.hatena.ne.jp/nattou_curry_2/20080928/1222604339を踏まえて再整理。
行エンティティを取得する目的としては、以下のどれでもよさそうですが、細かな挙動が異なるようです。

  • EntityManager.get()
    1. 行エンティティを生成&キャッシュ管理する。

  • EntityManager.find()
    1. クエリで行を選択する。
    2. EntityManager.get()にて、選択行の行エンティティを取得する。
    3. 選択行のデータ(カラム)をキャッシュに追加する。
  • EntityManager.findWithSQL
    1. SQLで行を選択する。
    2. EntityManager.get()で、選択行の行エンティティを取得する。

そして、Entityに対するgetXXX()においては、EntityManager.find()でキャッシュされた内容が使用されるようです。