2012-01-28 10 views
0

ソフトウェアアーキテクチャの観点からこの問題を設計する良い方法を見つけようとしています。カスタムハイバネートクエリをデザインするにはどうすればいいですか

私はORMとしてhibernateを使用しています。簡単にするために、私はidとnameというメンバを持つデスティネーションクラスを持っています。

私はhibernateセッションを使用して、宛先エンティティをデータベースに保存/書き込むことができます。しかし、私は別の目的地を読んで/検索する必要があるとき、私はどのようにこれを整理するか分からない。

2つの使用例:

  • 先GetDestination(文字列名)。 //正確な名前を検索し、存在する場合は1つの宛先を生成します。query1
  • Destination [] GetDestinations(string pattern); //一致するパターンの送り先を生成する:query2

私はsession.createQuery( "query goes here")を使用してデータベースから結果を取得します。

オプションA:

  • 私は、引数としてセッションを取る先でこれらのメソッドを作成することができます。しかし、これはデスティネーションを悩ますだろうし、私はそれを分離しておくだろう。

オプションB:

  • DestinationManager:この先とのセッション "持っています"。このクラスでこれらのメソッドを定義し、Destinationを汚染しないようにします。

このような状況に対処するには、どのような方法が推奨されますか?

答えて

0

リポジトリパターンは、通常、ドメインオブジェクトを永続性に依存しないようにするために適用されます。記事DDD: Repository Patternを読んでください。

あなたはこのようなものに慣れていないようですので、私はそれを簡単に保ち、階層化された方法に従うことをお勧めします。 UI -> Service Layer -> DAO。階層化されたアーキテクチャでは、サービスレイヤはトランザクション管理を担当し、DAOはデータアクセスを担当します。したがって、休止状態のセッションはDAOで取得/終了されます。

関連する問題