- PR -

JPAの検索結果に対するSpringのDependency Inject方法に関して

投稿者投稿内容
sweetlove
会議室デビュー日: 2003/12/23
投稿数: 9
投稿日時: 2007-07-22 19:19
Kazukiさん、返答ありがとうございます。

よい質問ですね。

Domain Driven Designという言葉をご存知でしょうか?Martin Fowlerがドメインモデルといっているものとほぼ同意なんですが、要するにJPAの結果に対して、ドメインモデルを形成したいと思っています。
Kazukiさんがおっしゃられる内容はMartin Fowlerがドメインモデル貧血症と述べているものでないかと思います。

引用:

従業員テーブルのデータを持ったクラスにどんなものをDIしたいんでしょう?



これに対する回答は、従業員オブジェクトと他のオブジェクトと関係を持たせたい、というのが理由です。(たとえば、従業員と給与計算が関係があったとすると、給与計算はDB上にデータとして持たないため、JPAのみでは関係が定義できない)

ややこしくてすいません。ベテランの方々、よい回答をお待ちしています。
ちゅう
会議室デビュー日: 2007/07/24
投稿数: 1
投稿日時: 2007-07-24 04:52
引用:

私の思い込みで、申し訳ないのですが、Springを使用することで、JPAのクエリーをした検索結果のオブジェクト(あるいはオブジェクトの配列)に対して、SpringはDependency Injectionを勝手に行ってくれるものと思っていましたが、実際やるとInjectionは行ってくれませんでした。(JpaDaoSupportを使用しても同様でした)



とのことから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 ]
yamasa
ベテラン
会議室デビュー日: 2003/02/15
投稿数: 80
投稿日時: 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
sweetlove
会議室デビュー日: 2003/12/23
投稿数: 9
投稿日時: 2007-07-26 07:04
引用:

yamasaさんの書き込み (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




すばらしい、捜し求めていたのはこれのような気がします。
もう少しきちんをSpringのドキュメントを読んでいればよかったです。

ありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)