2011-06-18 13 views
0

データベースからロードする必要がある別のBeanを使用する必要のあるBeanがあります。私はHibernateを使用し、DAOに@Repositoryというアノテーションを付けました。SpringアプリケーションコンテキストXMLからデータベースにアクセスするにはどうすればよいですか?

私はシングルトンとしてBeanを定義し、それを行うと、XMLでの工場として、DAOを使用するために管理が、リポジトリは、それは私に汚い感じているXMLに明示的ではないからです。ソリューションを理解しやすく、よりエレガント

ありますか?ここで

は、アプリケーション・コンテキスト-beans.xmlのの抽出物である:myValueDAOはXMLで定義されているが、このコード@Repository

でanotatedクラスは動作しますが、私はしないでくださいされていない

<bean id="myBean" 
     class="myBeanClass"> 
    <property name="defaultMyValue"> 
     <bean factory-bean="myValueDAO" factory-method="getEntity"> 
      <constructor-arg value="0" /> 
     </bean> 
    </property> 
</bean> 

それとSpring IDE Eclipseの機能はそれを好きではありません;-)

+0

@malejpavoukとダミーコードが追加されました – aalku

+0

'values'のテーブルには2つのカラム(id、name)があり、変更しないでください。実行時には変更されませんが、他の誰かがテーブルに定義する必要がある。 – aalku

答えて

1

これは、誰がこれを維持しようとしているかのような要因を考慮して、Javaでどれくらいしたいのか将来どのような変化が起こるのかそうするだろう。

私にとっては、他のBeanが自分自身を初期化する必要があるデータを含むutil:propertiesのようなものでない限り、普通の古いドメインオブジェクトを直接コンテキスト設定に置くのは嫌いです。あなたが持っているソリューションを使用すると、あなたに深い黒魔術のようなあまりを感じた場合は、(も、あなたが好きならautowiredすることができます)DAOのインスタンスを受け取り、myBeanClassのインスタンスを返す独自のFactoryBeanを書きます。あなたのBeanが依存持続豆/コレクションが含まれていない不変のHibernateのオブジェクトである場合

+0

これは、今のところ私にとって最良の解決策です。この場合、DAOをラップするBeanを作成し、 'factory'がXMLで定義されるようにします。 – aalku

+0

'_factors_ _like_ _who's_ _going_ _to_ _maintain_ _this_ _in_ _the_ _future_' 私はこれをmantainますか分かりません。私がそれを維持することを知っていれば、私は理解しやすい解決策を得ることを心配しないでしょう。 – aalku

0

それだけで意味を行うことができます。さもなければ、異なるセッションと遅延ロード例外の問題に巻き込まれる可能性があります。なぜ建築的視点のアプローチから疑わしいものを使用するのかを詳しく説明できますか?

+0

コメントを投稿するには評判を持っていないと私は答えていない;-)私はそのようなことをやった理由を私は説明しません。この「答えは」私はどのようにすべきお願いいたし負投票しないだろう私を助けるためにしようとしているので、私はそれらをする。 – aalku

関連する問題