- Entityはgenerate-
entities等で作成しても意味不明なごみがくっついてくる ので、手で作成した方が早いということで、Database Viewのエンティティは手作成の運用をしていたと記憶が。 - 当り前なのですが、
DAOで更新系の実装をすると怒られます。 - persistence.xmlで<property name="hibernate.hbm2ddl.auto" value="none"/>が必須になります。(create-dropとかにすると、
その名前のテーブルを作成しに行って、 同一名称のViewが存在している旨のエラーがデプロイ毎に吐き 出されます。) - 作成するEntityはそのViewがテーブルだと思って作成し
て差し支えないのですが、Viewとほかのエンティティでさらに@ OneToManyとかやりだすと苦しいと思います。 - 当時の用途はリスト表示個所だったのですが、
リストから詳細ページに入る際に詳細ページ側でテーブルのエンテ ィティを再取得することになるかと思います。 このことがStateful Session Bean/対話との相性が微妙になる気もしますので、 留意が必要かもしれません。当時は、対話を詳細ページにGETパラメータでキーを渡して、詳細ページから対話を開始するようにしていました。(多分) - まぁ、そういう意味で現時点では色々とアレなので、fetch=FetchType.
EAGER等でテーブルだけのORMで代用できないか検討した方が良いかと思います。 簡単な深くない結合であれば十分代用可能と思います。
あくまでも、僕はこう逃げたというお話なので、重々注意をしてください。
※参考
http://www.adam-bien.com/roller/abien/entry/mapping_jpa_entities_on_view
なんか見れないのでGoogleキャッシュも
http://webcache.googleusercontent.com/search?q=cache:VUnfCPteIlIJ:www.adam-bien.com/roller/abien/entry/mapping_jpa_entities_on_view+jpa+database+view&cd=2&hl=ja&ct=clnk&gl=jp