- - PR -
JPAの検索結果に対するSpringのDependency Inject方法に関して
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-22 19:19
Kazukiさん、返答ありがとうございます。
よい質問ですね。 Domain Driven Designという言葉をご存知でしょうか?Martin Fowlerがドメインモデルといっているものとほぼ同意なんですが、要するにJPAの結果に対して、ドメインモデルを形成したいと思っています。 Kazukiさんがおっしゃられる内容はMartin Fowlerがドメインモデル貧血症と述べているものでないかと思います。
これに対する回答は、従業員オブジェクトと他のオブジェクトと関係を持たせたい、というのが理由です。(たとえば、従業員と給与計算が関係があったとすると、給与計算はDB上にデータとして持たないため、JPAのみでは関係が定義できない) ややこしくてすいません。ベテランの方々、よい回答をお待ちしています。 | ||||
|
投稿日時: 2007-07-24 04:52
とのことからautowiringがやりたいことなのではないでしょうか? //Dao public class Hoge implements Serializable { public String hoge1; public String hoge2; } //認識に使うインターフェイス public interface HogeService { public Hoge put(); } //Springに読込ませるクラス public class HogeServiceImpl implements HogeService { public Hoge put() { //ここでDAO取得処理をおこなう //サンプルソースのため適当な値をいれとく Hoge hoge = new Hoge(); hoge.hoge1 = "hoge1"; hoge.hoge2 = "hoge2"; return hoge; } } //applicationContext.xml <bean id="s1" class="java.hoge.HogeServiceImpl" /> //どっかのServletで呼び出すクラス public class HogeAction { private HogeService service; //Spring はコンストラクタを監視して登録されているクラスの //インターフェイスと同じインターフェイスが呼び出されてる場合 //Injectionをおこなう public HogeAction (HogeService service){ this.service = service; } public void execute() { //これでhoge1とhoge2が取得できるはず String hoge1 = service.put().hoge1; String hoge2 = service.put().hoge2; } } 私の方ではこんな感じでHibernate3.x + Spring2.x + Struts2.xの連携をおこなっていますがいかがでしょう? 勘違いだったらごめんなさい。 おっと web.xmlに <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> も追加しないとね [ メッセージ編集済み 編集者: ちゅう 編集日時 2007-07-24 05:07 ] | ||||
|
投稿日時: 2007-07-24 12:51
下記ページに書かれていることがやりたいということでしょうか?
6.8.1. Using AspectJ to dependency inject domain objects with Spring http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-atconfigurable | ||||
|
投稿日時: 2007-07-26 07:04
すばらしい、捜し求めていたのはこれのような気がします。 もう少しきちんをSpringのドキュメントを読んでいればよかったです。 ありがとうございます。 |