[Seasar-user:20676] Re: 動的のO/Rマッピング

kubo [E-MAIL ADDRESS DELETED]
2011年 3月 23日 (水) 16:50:23 JST


久保(jflute)です。

vuhungさん、情報ありがとうございます。
なるほど、CSVファイルの抽出で運用者
自らがSQLファイルを管理するのですね。
確かにちょっと特殊なケースであると思います。

もし、単に関連テーブルだけが動的になるだけであれば、
ConditionBeanで、SetupSelect を分岐させれば良いだけ
ですが、そもそも記載された SQL 文の通りの結果を
返さなければならないのであれば、CBは利用できませんね。
外だしSQLも基本的には静的なSQLファイルに対応する
Beanにマッピングするためのものなので、運営者が書く
SQLを実行するためのものではありません。

さらに詳しく教えて頂きたいのですが、

> yomikomi.txtファイルにて
> 1行目:<table name 1>, <table name 2>
> 2行目:select文の記載

の1行目のテーブル名ってそもそも必要なのでしょうか?
2行目に実行するSQLがあるなら、それを単に実行して、
テーブル数が幾つであろうが(どんなテーブルがあろうが)、
そのSQLの結果を(select句のままに)csvファイルに
落とせば良いように思えるのですがどうなのでしょう?

抽出だけでなく加工する必要があると書かれていますので、
その加工作業にテーブル名が必要なのでしょうか?

また、1行目に列挙するテーブル数に上限はあるのでしょうか?
以前のメールでの質問と内容が重複しますが、
基点テーブルは決まっていて、例えば「会員」、
その関連テーブルをどれだけ一緒に取得するかどうか、
が動的に変わるのでしょうか?
それとも、基点テーブルは「会員」かもしれないし、
「購入」かもしれないし、と完全にどんなテーブルが
来るのかわからないのでしょうか?

2011/3/23 Nguyen Vu Hung (VNC) <[E-MAIL ADDRESS DELETED]>:
> 金子さん、久保さん、
>
> いつもお世話になっております。vuhungと申します。
>
> 課題の発生契機としは、複数のテーブルから、運用者が
> 設定可能なSELECT文をSeasarで抽出・加工し、csvファイルに落とす
> 夜間に実行するバッチを作成したいのです。
>
> 以前のメールで書きましたように、「SELECT文」では、1つまたは
> 複数のテーブルの可能性があります。
>
> 例として、
>
> yomikomi.txtファイルにて
> 1行目:<table name 1>, <table name 2>
> 2行目:select文の記載
>
> 「yomikomi.txtファイル」ファイルはJAVAプログラマの管理対象外で、
> select文のとおりにデータを抽出し、加工作業を加え、csvファイルを落とせばよいです。
>
> 厄介なのは、一行目のテーブル数がJAVA側では想定の範囲外です。
>
> なので、外出しSQLであろが, ConditionBean(条件付きBean)であろが、
> 結局、形の決まったBeanにマッピングしなければならないと思っています。
>
>> [Seasar-user:18921] 【DBFlute】 SQL文の直接実行
>> http://ml.seasar.org/archives/seasar-user/2009-November/018922.html
> これは別の課題だと思います。
>
> #もちろん、標準のjdbcを使う手はあります。
>
> ご不明点がありましたらご連絡下さい。
>
> 宜しくお願いします。
>
>
> (2011/03/22 10:05), kubo wrote:
>
> 久保(jflute)です。
>
> こんにちは、Nguyen さん
>
> 難しい問題と思われるので、より詳しい情報を
> 提供して頂けると助かります。
>
> (運用者が)SELECT文をテキストファイル記入させますが、
>
> この点がちょっとこちらでは理解できて
> いませんので、もっと詳細な説明を下さい。
>
> これは、アプリケーションの利用者(運用者)が、
> テキストファイルにSQL文(select文)を書いて、
> そのSQLをアプリケーションで実行するという
> ことでしょうか?
>
> もし、そうであるならば、結合の方法以前に、
> そもそもその機能をどうやって実現しようと
> 想定していますでしょうか?
> (ConditionBean or OutsideSql?)
>
> また、そのSQLの結果はどのような目的に
> 利用するのでしょうか?(画面に表示する?)
>
> そのテーブル内のテーブル数は事前に想定できない場合は
> (DBFluteのプログラマが)O/Rマッピングの対応はどうすればよいでしょうか
>
> DBFlute の ExampleDB で例えると、
>
> // ExampleDB | DBFlute
> http://dbflute.sandbox.seasar.org/ja/manual/reference/example/exampledb.html
>
> 検索対象が「会員」だけでなく、
> 「会員ステータス」を含んだり「会員退会情報」を含んだりと、
> FKで結ばれる、もしくは、FKで結ぶことが可能なテーブルを
> (運用者の)状況次第で動的に取得(結合)したりしなかったりする、
> と考えてよろしいでしょうか?
>
> 2011/3/22 Nguyen Vu Hung (VNC) <[E-MAIL ADDRESS DELETED]>:
>
> 各位、
>
> いつもお世話になっております。
>
> DBFluteにおける動的のO/Rマッピングに関する質問です。
>
> 例1:1テーブルからのオブジェクト↔テーブルのマッピング
> SELECT F1, F2,... ,Fn From T1
> →この場合はテーブルT1にマッピングしたオブジェクトを作成すれば問題有りません。
>
> 例2:複数テーブルからのオブジェクト↔テーブルのマッピング
> SELECT F11, F12,..F1n, F21,... ,Fnm From T1, T2
> →この場合はJOINしたテーブルにマッピングしたオブジェクトを作成すれば問題有りません。
>
> そこで質問です。
>
> (運用者が)SELECT文をテキストファイル記入させますが、
> そのテーブル内のテーブル数は事前に想定できない場合は
> (DBFluteのプログラマが)O/Rマッピングの対応はどうすればよいでしょうか
>
> 要は、
>
> SELECT F1, F2,... ,Fn From T1
> SELECT F11, F12,..F1n, F21,... ,Fnm From T1, T2
> SELECT F11111, ...,Fnmpq... From T1, T2, T3, T4,...
>
> など、記入される動的なケースがありますので、対応したいのです。
>
> 宜しくお願いします。
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


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