外だしSQLのIFコメントの判定の利用パターン

閲覧: 348 回
最初の未読メッセージにスキップ

jflute

未読、
2009/09/27 22:54:172009/09/27
To: DBFluteユーザの集い
jfluteです。

「OGNLに依存しないようする(Java)」
https://www.seasar.org/issues/browse/DBFLUTE-555
ということを考えています。(0.9.6 or 0.9.7あたり)
意識せずに移行できるようにしようとは考えていますが、ユーザの方々が
「外だしSQLのIFコメント」でどんな使い方をしているかが鍵になります。
もし、「こんな使い方してる」とか「すごい特殊な使い方してる」とか
パターンがありましたら、気の向いたときにでも挙げて頂けると幸いです。

個人的には、JIRAに記載しているパターン以外のIFコメントは
書いたことが無いような気がします。難しい判定するときは、
ExParameterBeanで独自プロパティを定義することもできるし。

#
# そもそもIFコメントでOGNLが使えるよ、ってあんまり書いてないはず
# なので、使ってる人も「ここがOGNLなんだぁ」と意識して実装してる
# ことは少ないようには思ってはいますが。。。
#

awaawa

未読、
2009/09/29 13:10:232009/09/29
To: DBFluteユーザの集い
awaawaです。

自分も、JIRAに記載しているパターン以外のIFコメントは、
いままで使ったことないですね。

> dbflute-runtime.jarは完全に非依存ライブラリとなる
利用者からすると、やはり依存関係はない(少ない)ほうがうれしいです。

Kaneko

未読、
2009/10/01 0:27:202009/10/01
To: DBFluteユーザの集い
Kanekoです。

私も、JIRAに記載しているパターン以外のIFコメントは、
今のところ、使用したことがないですね。

Seasarを使用するならば、
OGNLに依存していても、問題はないのでしょうが、
(S2自体がOGNLを使用しているから)
他のコンテナとの組み合わせのことを考えると、
やはり、依存はないほうが、よいかとは思います。

ExParameterBeanという、解決策があるということなので、
OGNL非依存にしてしまっても、問題はないのではなかろうかと思います。

>DBFLUTE-525のパラメータコメントのチェックで、
>サポートしない構文をチェックできたらいいかも!?
>それと同時に移行すればユーザが影響範囲を検知しやすい

これは、ぜひほしい機能ですね。
やはり、影響範囲の特定がいろいろな面でしやすいというのも、
DBFluteの特徴のひとつだと思います。
> > #- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

jflute

未読、
2009/10/02 3:16:002009/10/02
To: DBFluteユーザの集い
jfluteです。

ありがとうございます。

JIRAちょっと修正しました。
o 理由を一つ追加
o 比較の部分を単純に
もう一度見て頂ければと。

https://www.seasar.org/issues/browse/DBFLUTE-555
理由:「自前でやることでエラーメッセージをもっと詳細に出せる」
仕様:「>, <, >=, <=や数値リテラルや文字列リテラルはサポートしない」

まだまだご意見お待ちしております。

Kaneko

未読、
2009/10/02 4:44:432009/10/02
To: DBFluteユーザの集い
Kanekoです。

JIRAを見ました。

> 仕様:「>, <, >=, <=や数値リテラルや文字列リテラルはサポートしない」
これは、きついですね・・・・。
私のプロジェクトだけかもしれませんが、
外だしSQLをほぼすべて書き直しです・・・・。

特に、 日付の比較があるので、>= 、<= を多用しています。
あとは、業務システム系では、
ステータスの概念がどこでもあると思うので、
数値や文字と比較できないのも、
割と、厳しいのではないかと。
外だしでも、classficationを使用していれば、別ですが。

個人的には、外だしSQLのclassificationは、
使いづらいので、あまり使ってないというのもありますが・・・。
(自分が、ものぐさなだけかもしれませんが・・・。)
> > > - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

jflute

未読、
2009/10/02 5:12:542009/10/02
To: DBFluteユーザの集い
jfluteです。

なるほど、日付の比較ですか。ありがとうございます。
自分は一度も試してこと無いですが、実際に利用しているとのことですね。
ちなみに、「pmb.fooDate < pmb.barDate」という感じでしょうか?

#
# もうちょい実装を考えてみますね。
#

Kaneko

未読、
2009/10/02 6:49:202009/10/02
To: DBFluteユーザの集い
Kanekoです。

> ちなみに、「pmb.fooDate < pmb.barDate」という感じでしょうか?
そのパターンですね。
外だしSQLほぼすべてといっても、
ファイル数自体は、さほど多くないです。
(多分、10ファイルもないです。)

なので、
どうしても、サポートが厳しいということであれば、
移行できないこともないかなと思います。
ただ、構文のチェックがないと、
かなり、移行がきついとは思います。

あと、私は使用していませんが、
以下のような比較もあるかも。
(多分、classficationの適用範囲なので、
本筋からいえば、classficationを使用すべきかと思います。)

【ex】
/* IF pmb.viewStatus (!)= 3 */
(viewStatusは画面から取得(導出元はDB))

jflute

未読、
2009/10/02 8:40:002009/10/02
To: DBFluteユーザの集い
jfluteです。

https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-runtime/src/test/java/org/seasar/dbflute/twowaysql/node/IfCommentEvaluatorTest.java
どんなもんでしょー

JIRAも修正しました(元に戻しました)。

> /* IF pmb.viewStatus (!)= 3 */
> (viewStatusは画面から取得(導出元はDB))

ただまあ、Classificationを使わないにしても
こういう使い方はちょっと推奨できないですね。

jflute

未読、
2009/10/04 6:19:422009/10/04
To: DBFluteユーザの集い
jfluteです。

DBFlute-0.9.5.5-RC1にて、オプション次第で
OGNLを利用しないようにできるようにしました。
(OGNLのJARが要らないわけじゃない、使わないだけ)

もちろんデフォルトは今まで通りOGNLを利用。
アプリ起動時にDBFluteConfigでxsetUseOgnl(false)ってやると、
OGNLを利用せずに独自のEvaluatorでIFコメントを評価します。

DBFluteConfig.getInstance().unlock();
DBFluteConfig.getInstance().xsetUseOgnl(false);

既にdbflute-basic-exampleで試しています。
全てのテストが正常に動作しています。
こんな無茶苦茶なIFコメントのテストも作りました。
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-example/src/main/resources/com/example/dbflute/basic/dbflute/exbhv/various/pmcomment/MemberBhv_selectSupportedExpression.sql
(なんというかある面においてはOGNLよりもリッチになってたり...)

試して頂ける方はぜひお願いします。(特にKanekoさん)
上記のConfigの設定をして、単に既存の外だしSQLが実行できればOKです。
終わったらすぐにそのConfigの設定は削除して下さい。

On 10月2日, 午後9:40, jflute <dbfl...@gmail.com> wrote:
> jfluteです。
>
> https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-runtime/src/...

Kaneko

未読、
2009/10/04 22:03:562009/10/04
To: DBFluteユーザの集い
Kanekoです。

ご考慮いただき、ありがとうございます。

別件で、今日テストすべきところがあるので、
それと併せて、テストしておきます。

>ただまあ、Classificationを使わないにしても
>こういう使い方はちょっと推奨できないですね。

確かに、好ましいとは思えないですね。
そして、私は、使用してないですが、といいながら、
一箇所だけ、使用しているところがありました・・・・。(苦笑)

どういう機能かというと、
集計の機能なのですが、
選択されているチェックボックスによって、
Group Byの単位・順番が変わるという機能ですね。
以下のような感じです。
(実際には、summaryItemが01から、04まであります。)

【Ex】
group by
/*IF pmb.summaryItem01 != null */
/*IF pmb.summaryItem01 == "date"*/
,coh.coh_date
/*END*/
/*IF pmb.summaryItem01 == "stuff"*/
,stf.stf_id
/*END*/
/*IF pmb.summaryItem01 == "service"*/
,prd.prd_id
/*END*/
/*IF pmb.summaryItem01 == "custKbn"*/
,coh.coh_cst_kbn
/*END*/
/*END*/

>こんな無茶苦茶なIFコメントのテストも作りました。
ここまでやると、すごいですね・・・・。
さすがに、私も、ここまでやらない。(笑)

ただ、この対応によって、パラメータコメントのチェックが、
できなくなってしまうということだと、どっちがいいんだろう・・・・。

コメントのチェックが欲しいという方のほうが、
多数な気がしますが、どうなんでしょうか?

On 10月4日, 午後7:19, jflute <dbfl...@gmail.com> wrote:
> jfluteです。
>
> DBFlute-0.9.5.5-RC1にて、オプション次第で
> OGNLを利用しないようにできるようにしました。
> (OGNLのJARが要らないわけじゃない、使わないだけ)
>
> もちろんデフォルトは今まで通りOGNLを利用。
> アプリ起動時にDBFluteConfigでxsetUseOgnl(false)ってやると、
> OGNLを利用せずに独自のEvaluatorでIFコメントを評価します。
>
> DBFluteConfig.getInstance().unlock();
> DBFluteConfig.getInstance().xsetUseOgnl(false);
>
> 既にdbflute-basic-exampleで試しています。
> 全てのテストが正常に動作しています。
> こんな無茶苦茶なIFコメントのテストも作りました。https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-exampl...

jflute

未読、
2009/10/04 22:38:102009/10/04
To: DBFluteユーザの集い
jfluteです。

ご確認よろしくお願いします。

> (実際には、summaryItemが01から、04まであります。)
ぜひ、Classificationを!

> ただ、この対応によって、パラメータコメントのチェックが、
> できなくなってしまうということだと、どっちがいいんだろう・・・・。
これってOutsideSqlTestでのチェックってことですか?
それはそれでやりますよ。主にNGチェックですが。

#
# さて、出かけます...
#
> ...
>
> もっと読む ≫

Kaneko

未読、
2009/10/04 22:53:342009/10/04
To: DBFluteユーザの集い
Kanekoです。

> ぜひ、Classificationを!
近々、考慮します。
やはり、ソースを見てても、あまり気持ちのいいものでもないので。

> これってOutsideSqlTestでのチェックってことですか?
> それはそれでやりますよ。主にNGチェックですが。

リッチにしても、これが実現されるのであれば、
非常にありがたいです。


では、いってらっしゃいませ。
> ...
>
> もっと読む ≫- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

jflute

未読、
2009/10/14 9:54:462009/10/14
To: DBFluteユーザの集い
jfluteです。

> dbflute-runtime.jarは完全に非依存ライブラリとなる
ちなみにですが、common-loggingには依存してます。
まあ、これはもう勘定に入れてないというところで。。。
> ...
>
> もっと読む ≫

jflute

未読、
2009/10/14 12:03:092009/10/14
To: DBFluteユーザの集い
jfluteです。

DBFlute-0.9.5.5をリリースしたと共に
OGNLに非依存なDBFlute-0.9.6-BETA1を公開しました。
http://d.hatena.ne.jp/jflute/20091015/1255535961
> ...
>
> もっと読む ≫

jflute

未読、
2009/10/26 11:10:092009/10/26
To: DBFluteユーザの集い
jfluteです。

こちらの件、0.9.6-RC1で対応しました。
http://d.hatena.ne.jp/jflute/20091026/1256569726

On 10月5日, 午前11:03, Kaneko <yuichikan...@gmail.com> wrote:
> ...
>
> もっと読む ≫
全員に返信
投稿者に返信
転送
新着メール 0 件