これが完全に重複している場合は訂正してください。このトピックが頻繁に議論されていることは知っていますが、決定的な答えを見つけることができません。
質問:
MVC WebアプリでHibernateオブジェクトを処理するための最良の実用的なソリューションは何ですか?
詳細:
私はHibernateを使用しており、可能な場合は遅延読み込みを活用したいと考えています。
私はMVCスタイルのWebアプリで作業しています。
遅延読み込みの初期化の例外を取得するのは嫌いです。
トランザクション間でHibernateオブジェクトを再アタッチする必要はありません。
オプション:
- 熱心にすべてをロード
- 怠惰な初期化の問題を解決しますが、クエリが大きくなります
- 「ビューでセッションを開く」という概念を使用する
- 私はそれのシンプルさが大好きです
- オブジェクトは引き続き再接続する必要があり、AJAXyセットアップでは、かなり頻繁に再接続する必要があります
- すべてのリクエストに対してセッションが開かれます
- トランザクションを終了する前に必要な「タッチ」アイテム
- せいぜい薄っぺらなようです..そして退屈です
- ビューに実際のHibernateオブジェクトが表示されないように、異なる単純化された「分離」オブジェクトを作成します
- これらは完全なHibernateオブジェクトよりも単純である可能性があるため、モデルの完全な熱心なロードとは異なります。
- 私はこれが場所で推奨されていると聞きましたが、より多くの責任/コード/仕事のようです
- Hibernateオブジェクトを操作したいときはいつでもセッションを開きます。
- これはSpringServiceレイヤーにうまくまとめることができますが、場合によっては過剰に見えることもあります。例:私はしたいのです
hibernateObject.getRelatedObjects()
が、次のようなことを言う必要がありますspringService.getRelatedObjects(hibernateObject)
- これはSpringServiceレイヤーにうまくまとめることができますが、場合によっては過剰に見えることもあります。例:私はしたいのです
私は何かが足りないのですか?
私は物事を考えすぎましたか?
私は物事を過小評価しましたか?
PS:
Webフレームワークの場合、私はZKを使用していますが、ZK固有の回答は必要ありません。
私もSpringを使用していますが、Spring固有の回答はどこにでもあるので、かっこいいです。