Hibernateを使用したトランザクションサービスメソッドを介してデータを渡すときにDTOを使用しないようにする本当の方法はありますか?言い換えれば、DTOは怠惰な初期化の問題を避けるための唯一の非ハックな解決策ですか?データ転送オブジェクトとトランザクションサービスメソッド
オープンセッションビューのパターンで:
は私がのDTOには、2つの人気のある選択肢と私は本当に彼らがいる好きではない理由だと思います。これは、サービスメソッドを本当にトランザクション的に保ちたい(つまり、メソッドが終了するとHibernateセッションがコミットされ閉じられる)ので、私は気に入らない。これは主に、後でWebサービスとしてサービスを公開する必要がある場合、トランザクションについて心配する必要がないためです。DTOの代わりにサービスメソッドを使用してドメイン/ビジネスオブジェクトを渡し、必要な属性/プロパティを取得することができます。これはやや良いです。しかし、複雑なエンティティリレーションを持つ自明でないドメインオブジェクト階層では、熱心な取り込みはどこかで停止する必要があります。そして、そうなったら、どのようにしてこれが完全に素早く完全なハックトンに変わらないのかわかりません。
実際には保守性の観点から唯一の堅実なアプローチであることが分かっていますか、DTOですか?
セッションを開いたままにしておくと分かりやすいようです。 Webサービスの難しい部分は、エンティティオブジェクトツリーが深い場合、一部のブランチを切り捨てるか(後で問い合わせる)、または参照するIDに置き換える必要があるということです。一度これを行うと、基本的にDTOがサービスの外に形成されています。 –