[Seasar-user:18815] Re: 【Doma】1対1/1対n の実装方法

黒川博之 [E-MAIL ADDRESS DELETED]
2009年 10月 29日 (木) 17:22:34 JST


中村さん

返信ありがとうございます。


> SQLの結果セットはフラットにひとつのクラスにマッピング
> したほうがわかりやすいと思っているからです。
確かに、Domaの仕様はシンプルで分かりやすいですよね。
そのスタンスだと、結合SQLは不要かもしれませんね。


> 複数回にわけて取得してもいいなら、
> Delegateの代わりにDaoの呼び出し元(Serviceクラスみたいな)で
> EmployeeDaoやDepartmentDaoにアクセスしてもいいと思います。
>
> JOINを使用して1度で取得すべきなら
> EmpDeptDtoみたいなエンティティを別途つくるのが
> いいと思います。
> EmpDeptDtoにはJOINで取得したいカラムに対応する
> プロパティをもたせます。
> もちろん、EmployeeとDepartmentのn対1といった
> 関連の多重度をあらわすことはできないのですが。
あまりクラスは増やしたくないから、どちらかというと
個人的には呼び出し元で対応って方がすきかもです。



> @Delegate先のメソッドにジャンプする機能ですが、
> あってもいいかもしれないですね。
> 現状の機能で簡単に委譲先に移動するには、Ctrl + tなど
> で実装メソッドを開いて、そこから委譲先のメソッドを
> 呼び出しているところを探してジャンプするのが確実です。
Ctrl+tの方法で確かにジャンプ出来ました。
もし可能であれば、プラグインでの機能追加をご検討
頂ければ嬉しいです。




> クラスやメソッドがなければ自動作成する機能ですが、
> SQLファイルからはメソッドの名前は決められても
> 戻り値の型、パラメータの型、アノテーションの種類等が決められないため
> 中途半端にメソッドを生成してもあまり便利ではないのかなぁ
> と思っています。
> 作るとしたらアノテーションは@Select決めうち、
> 戻り値はvoid、パラメータはなしみたいになりますね。
> たとえば、selectById.sqlから作るとこんなかんじ。
>
>  @Select
>  void selectById();
なるほど、
> 戻り値の型、パラメータの型、アノテーションの種類等が決められないため
この部分の考慮が漏れてました。
こちらの機能はおっしゃるとおり中途半端になりそうだから
不要そうですね。



----- Original Message ----- 
From: "Toshihiro Nakamura" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Thursday, October 29, 2009 12:38 PM
Subject: [Seasar-user:18808] Re: 【Doma】1対1/1対n の実装方法


> 中村(taedium)です。
>
>> http://doma.sandbox.seasar.org/faq.html#feature-11
>> 1対1/1対n がサポートされていないようですがどのような理由からでしょうか?
>
> SQLの結果セットはフラットにひとつのクラスにマッピング
> したほうがわかりやすいと思っているからです。
>
>> Delegateを使用する手順を考えましたが
>> 他に何かいい方法があればお教え下さい。
>
> 複数回にわけて取得してもいいなら、
> Delegateの代わりにDaoの呼び出し元(Serviceクラスみたいな)で
> EmployeeDaoやDepartmentDaoにアクセスしてもいいと思います。
>
> JOINを使用して1度で取得すべきなら
> EmpDeptDtoみたいなエンティティを別途つくるのが
> いいと思います。
> EmpDeptDtoにはJOINで取得したいカラムに対応する
> プロパティをもたせます。
> もちろん、EmployeeとDepartmentのn対1といった
> 関連の多重度をあらわすことはできないのですが。
>
>> 【その他】
>> プラグイン
>> @Delegate先のメソッドにジャンプする機能や、クラスやメソッドがなければ自動作成する
>> 機能があれば便利かと思いました。
>
> @Delegate先のメソッドにジャンプする機能ですが、
> あってもいいかもしれないですね。
> 現状の機能で簡単に委譲先に移動するには、Ctrl + tなど
> で実装メソッドを開いて、そこから委譲先のメソッドを
> 呼び出しているところを探してジャンプするのが確実です。
>
> クラスやメソッドがなければ自動作成する機能ですが、
> SQLファイルからはメソッドの名前は決められても
> 戻り値の型、パラメータの型、アノテーションの種類等が決められないため
> 中途半端にメソッドを生成してもあまり便利ではないのかなぁ
> と思っています。
> 作るとしたらアノテーションは@Select決めうち、
> 戻り値はvoid、パラメータはなしみたいになりますね。
> たとえば、selectById.sqlから作るとこんなかんじ。
>
>  @Select
>  void selectById();
>
> -- 
> Toshihiro Nakamura
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user 



Seasar-user メーリングリストの案内