1read 100read
2013年03月プログラム363: 【Java】DIコンテナって本当に便利か? (461)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
スレ立てるまでもない質問はここで 125匹目 (820)
Tapestryについて語ろうよ! (808)
エスパーが質問に答えるスレ (309)
SDL=Simple DirectMedia Layerでゲームだ (533)
C/C++の宿題片付けます 163代目 (631)
C++/TemplateMetaProgramming (493)
【Java】DIコンテナって本当に便利か?
- 1 :2008/08/20 〜 最終レス :2013/02/24
- インターフェースクラスやら設定やら増えまくって
かなりめんどくなってんだけどw
- 2 :
- DIってなに使ってるんだよw
いまどきXML地獄なんてどのFWにも無いぞ
- 3 :
- 使わずに組んだほうがラク
- 4 :
- >>2
Spring2.5からはアノテーションインジェックションが
使えるようになったからXML地獄じゃなくなったよ。
- 5 :
- 優柔不断すぎるプロジェクトが多い気がする。
インタフェース作っても、実装クラス一つしかなかったり。
結局、特定の組み合わせでしか動かなかったり。
- 6 :
- 実装クラスひとつはふつうと言えばふつう。
- 7 :
- >>1
インターフェース書くのが嫌ってことなら、そっちの方が大問題だね
まあ、そもそも DI するのにインターフェース書かなきゃいけないってことは無い訳だが
脱線するが、
interface と abstract class は全く違うものなんだけど、分かってるつもりでいて、実は分かってないやつは非常に多い
>>1 もそんなとこだろう
abstract class は拘束、interface は主体的な宣言とか言ったらヒントになるか…
共通点は勿論あるんだが、設計においては、これは全く違う意味を持ってくる
それが分からんと、 interface の価値が見出せなくなったりするようだ
なんと言うか、interface を拘束の意味でしか理解していないとでも言うか…
それから、実装クラスが一つしかないと、端折って直接実装を呼びたくなったりするらしいが、
その点 DI は interface の旨味を再確認させてくれる。
- 8 :
- >>7
お前が interface と abstract class の違いをよく理解していないことだけはわかった
- 9 :
- ↑
どうやら何かを判ったつもりになってひとりで納得しているの図
- 10 :
- インターフェースは不要っしょ
俺ぁ余計なクラス、設定が増えまくる事自体が問題だと思う
- 11 :
- springスレも落ちたし、guiceスレも時間の問題だな。
- 12 :
- 具体的な個々の処理が存在するならインターフェースは書くべきだよ
実装しかないと、常に密結合状態じゃん
サービスの実装に
new InitialContext();
とか直接書いたりしないでしょ?それと同じ
後から何か処理を加えたいと思った場合、インターフェースがあれば最初の実装に手を加えなくても済むケースがあるでしょ?
実装しかないと、そいつにドンドン追加する羽目になりがち
下に何か加えることは出来るけど、上に被せられないし
それに、インターフェース守れば良いんだから、却って自由に書けると思うんだが
ただ DI に関して、設定が増えまくるのは確かに苦痛
そこでアノテーション
でもこれって、テストとリリースでどうやって分けんのかとか、ちょっと混乱しそうな気もする
ルール付け徹底すりゃいい話なんだろうけど
- 13 :
- ぐだぐだなところは、インタフェースを書き換えるから意味ないって。
- 14 :
- XMLが地獄だと思わないんだが。
クラス図書くより全然楽だし。
アノテーションの方が地獄っぽくないか?
組み合わせ変更するのに、なんでコンパイル必要なんだよ。
何のために interface 書いたのか分からん。
もっとも DI 嫌ってる人は、そんな瑣末なことなんてどうでもいいんだよ。
本当は疎結合の良さが分かってないだけ。
自分がなんで DI 好きになれないのか、それすら分かってない。
DI なんてどうでもいいから、疎結合に慣れろ。
慣れた結果、密結合で十分かつ適当な場合と
そうではない場合が分けられるようになればそれでいい。
- 15 :
- 疎結合を保つためにDIは必要ないし、
DI使ってても密結合になってる例はたくさんあるし。
- 16 :
- >>15
確かに
結局は分かってるか分かってないかに落ち着いてしまうのかな
シングルトン強制ギプスとか思っても、分かってりゃ必要に合わせてシングルトンで書くわけだし
ただAOPは捨てがたいな
AOPを捨てれないとDIも捨てられないw
- 17 :
- >>12
>>10を見て目を疑ったんだが、結合度とか凝集度って未だに普及してない概念なのかねぇ。
まぁ、インターフェース大増殖とか設定ファイル大増殖とかアノテーションだらけってのは見てて気分のいいもんではない、というのは確かなんだが。
そこらへん、Scalaだとだいぶ緩和されそうだけど、普及するかなぁ。
interface Hige { String execute(); }
void hoge(Hige hige) { println(hige.execute()); }
が、
def hoge(hige: {def execute: String}) = println(hige.execute)
(higeがStringを返すexecuteメソッドを持っていれば何でもいい)
となるので、リスナーみたいなインターフェースはまとめて削減できそう。
- 18 :
- いや、やっぱ必要ないファクトリ書くのも プロパティセットするコード書くのも面倒くさいからDI捨てらんないわ
- 19 :
- >>15
確かに。でもそれを言い始めたらキリがないのでは。
- 20 :
- >>11
Seasarのことも思い出してください><
- 21 :
- 疎結合?ソースが見にくいんですけど
- 22 :
- ネタなのかマジなのか微妙なところ突いてくるな
- 23 :
- 成果物としてのコードが特定のフレームワークに強く依存するのが怖い。
「それがどうした、知らないお前が勉強不足」と開き直れるほど枯れた技術ではないし。
開発現場が全速力で短距離を走り抜けるための技術というか…
と感じながらも全速力で走らメシが食えないから使うんだけどな。
- 24 :
- 特定のフレームワークに ”強く依存” ってのが気になるね。
いったいどんなコード書いてんだ?
ぶっちゃけ特定の「なんちゃら」への依存が弱まることはあっても、強くなるケースっていまいち想定できないな。
モジュール間の結合度を弱めてテストをし易くするのが利点と思いきや、”強く依存” とはこれ如何に?
もしそれでモデルにフレームワークへの依存が入り込んでるんなら、実装に問題があると思ったほうが良いのでは?
内製だったらモデルとフレームワークの強い依存関係が許される、なんてオチじゃないよね?
あと枯れてる枯れてないって、じゃ generics や annotation は枯れてないから使わねーと?
- 25 :
- > 開発現場が全速力で短距離を走り抜けるための技術というか…
それは RoR とかポトペタで画面作れますとか、
O/R mapper でウハウハだよもんとか、
そう言うレベルの話では。
DIコンテナが提供してくれるのは糊だけ。
既存のポトペタとくっつけたきゃそうするし、
フルスクラッチの俺様フレームワークとくっつけても良いし。
疎結合の利点を最大で活かすために糊に徹してるのが DI コンテナ。
- 26 :
- 下手のコードを閉じ込める
自分でファクトリ書かなくていい
テストコードが嫌でも書きやすくなる
下2つが特に有難い
短期開発でメンバのスキルが低いときは逆にDI使わないと品質は保てない
ファクトリ書いてる時間を他の作業に回せるし
- 27 :
- ファクトリとかわざわざつかわねーし。
余裕あるんだな
- 28 :
- 密結合を気にしない >>27 の一言でした
ファクトリ書かなくても良いってのが DI の利点の一つなわけだが、
そもそもなんでファクトリ書くべきなのか分からんようでは、その利点も分からん訳だ。
溝は深いね〜
- 29 :
- >>28
ファクトリとかソースが見にくくなるだけ。
- 30 :
- 大抵のOSSのフレームワークやミドルウェア製品の
提供するAPIには必ずファクトリが含まれるわけだが
- 31 :
- 「DIのいいところ教えてください。」
って聞きたいのに、強がって
「DIコンテナって便利か?」
って聞いてるわけか。
- 32 :
- DIコンテナが分からないんじゃなくて
それが登場した背景の考え方が分かってない。
だからいつまで経っても話がかみ合わない。
モジュールの凝集度高めて疎結合目指すなんてのは
それこそ20年以上前から言われてることなのに
理解して実践してるのはごく少数なのが現実。
- 33 :
- だよもんとか(某板の外では)数年ぶりに聞いた
- 34 :
- >>32
全くもってそうらしいね
今途中から突っ込まれて行ってるプロジェクトは結構グダグダで火を吹いてるんだが、
ソースを見てビックリ呆れること多数。
所謂大規模開発で、結構な数の業者が入っていて、開発人員も多いんだけどね。
規模なんてソースの品質には関係ないらしいよ。
勿論 DI なんて使ってないんだが、更に残念な事に自分等でファクトリを書いてない。
おまけにベンダ製のツールが吐いたファクトリクラスがあるんだが、
そのファクトリを使うとき、getFactory() ってなスタティックメソッドがあるにも関わらず
毎 回 そ の フ ァ ク ト リ を new し て る 。 orz
てめぇー、インスタンスの取得方法を知らなくてもいいようにファクトリがあんのに、
そのファクトリを毎回 new してどーすんのよ!?ってな感じ orz orz
そんなコードがゴロゴロ
こんなんが某超大手元受の金融機関向けシステム開発だってんだから
残念な業界ですねって言いたくなるよ。
その残念な質の一画を自分の会社が占めている事実が更に残念。
早く辞めてぇ
(マな内容でスマソ)
- 35 :
- 誤:インスタンスの取得方法を
正:インスタンスの生成方法を
- 36 :
- >>34
お前も残念な会社の社員なんだろ?www
- 37 :
- >>34
気持はわかるけど、ここマ板じゃないから。
- 38 :
- >>34
そんなつまらん会社辞めろ。
お前も残念な質の会社の一角を占めてるんだ。
辞める気がないならつまんない愚痴言わず、
会社、業界を良くする努力しろ。
- 39 :
- Springスレが落ちたってのがDIはゴミってのを物語ってないか?
- 40 :
- >>34
>ベンダ製のツール
そのベンダ製のツールの使用ガイドとかはちゃんとアナウンスされてるんだろうな?
「用意しました。後勝手に使ってね」ってのはマネジメントしてねぇ。
>規模なんてソースの品質には関係ないらしいよ
基本的には「ある」と思ってる
規模が大きくなればなるほど全体的なソースの品質は低下する
まあ上記のような問題を解決するための手段として
AOPやらDIみたいなのが出てきたのだけど
結局AOPやDIで何がやりたいかの理解が
実装者個人個人にまかされてしまってるのが問題な希ガス。
実装ガイドくらいではそこまでの統一はとりづらい。
で堂々巡りな状況に陥ってるような。
- 41 :
- DIに興味ない人がたくさんてことを物語ってるとは思う。
興味ある人も取り立てて語る事なかったし。
気になって試して、気に入ったら使う。
ドキュメントが詳細だから疑問に持つこともない。
> 結局AOPやDIで何がやりたいかの理解が
テストとか便利にできるよ程度でいいんだけどね。
テスト極めようと思ってれば、気がつけば疎結合になってるだろうし、
適切なテストがきちんと通るなら品質には問題は出ない。
でも背景知らずにツールだけ知って、
使い方分からない、良さ分からないとか言ってる人が多数なわけで。
で、説明するのも面倒だから放置して
気が付くと自分しか使ってないとか、そんな感じ。
- 42 :
- DIに限らないけど「技術に興味が無い人が使うツール」というところまで持っていかないと広まらないよ。
- 43 :
- >>36
笑いごっちゃーないですわ…
>>37
重々承知です。ご勘弁を
>>38
辞めるにしろ、対策するにしろ、具体策を考えてるところです。
ただ、このプロジェクトは今更どうこう出来る状態じゃないので、今ある部分は最後までそのままだと思われ。
>>40
そのベンダのツールは勿論マニュアル付きです。
つか、読まなきゃ使えないはず…
まあファクトリを理解せずに毎回 new しちゃってる、ってことなんだと思いますよ…
>>規模なんてソースの品質には関係ないらしいよ
>基本的には「ある」と思ってる
>規模が大きくなればなるほど全体的なソースの品質は低下する
…
次転職するときは面接で何を聞かなきゃいけないか良く分かった、ってことは最近痛感している。
- 44 :
- >>42
その事を理解してないプロジェクトの多いこと多いこと
チーム内で最低のレベルにいるメンバーにも
問題なく使わせられるようにしないといけないのになぁ
>>43
>そのベンダのツールは勿論マニュアル付きです
そのマニュアルの内容にもよるけど
上で語っているようなレベルのもの?
マニュアルを自分が理解できたから
他人も理解するべきってのは違うぞ。
ちとマ的とゆうかPM的になっちゃたな・・・
- 45 :
- >>39
ああ、落ちてる。せっかく立てたのに・・・。
- 46 :
- 蜜結合でも機能ごとに分かれてた方が
結局後で分かりやすいんだよな
- 47 :
- Springスレ立てないの?
SpringMVC語ってくれる人あそこくらいだったんでよく見に行ってたんだが
- 48 :
- >>47
もはやS2の方が完全上位なんじゃね?
- 49 :
- 学べば学ぶほど悲しくなる
無知こそ最強って感じだよorz
- 50 :
- >>24
利用するDIコンテナに強く依存
- 51 :
- >>49
相当流行ってからじゃないと勉強もイミないかも・・・
- 52 :
- 人は流れに乗ればいい
- 53 :
- jspを書かなくていいとか、
せっかく覚えたのに。。。
- 54 :
- >>47
俺もSpringMVCが好きなんだけど、
じゃぁ毎日語ることがあるのかと言われると、そんなものはない。
Spring スレは3年くらいスレが保守されてたが、
1.2.x が安定したころから、特に話題もなくなった。
- 55 :
- >>54
SpringMVC悪くないんだけど、
あのControllerの深い継承具合はどうかと。
なんだよ、あのテンプレートメソッドの嵐。
せっかくDIコンテナなんだから、
ブリッジパターンとかもーちょっとすっきりできなかったのかよ。
- 56 :
- 引数戻り値に平気でコレクションの実装クラス使う連中にDIが理解できるはずがない
- 57 :
- Springはゴミですかそーですか
- 58 :
- >>56
気持ちはわかる。なにも考えずにそういう事する奴は確かにいる。
メソッド全部publicとかと同レベル。
でもサービスクラスを書いてるときに、要素の入れ替えがあるから
LinkedListに使ってるよーとか、こいつは要素追加するとソートされるよ
とかを利用者に伝えるために戻り値の型を実装クラスで書いた方が
いいんじゃないかと思うこともある。
- 59 :
- ファクトリを書かなくていいのにメリットがあるのは同意だけど、
起動時遅いとかメモリ喰うとかのデメリットもあるよね。
インジェクションするクラスを設定で簡単に切り替えられるのが
一番の目的だったと思うんだけど、本番環境にデプロイするのは
1パターンだけであまりメリットが感じられない。テスト用なら
こんな高機能いらなくて設定ファイルでObjectIdと実クラス名
の紐付けできるファクトリがあればいいだけだし。
似たようなシステムをちょこっとクラス入れ替えていくつも
リリースするような時には確かに有効。ソースツリーも
一つで管理できるし。でもそんなプロジェクト一回しか経験したこと無い。
Web側(jsp)は全然違うから別ソースだし。似たようなプロジェクトの時も
反省点を踏まえて作り直したりするし。
ファクトリのコード削減とAOPによるログ出力くらいなんでしょうか。
- 60 :
- >>50のレスが秀逸すぎるわ
- 61 :
- >>59
起動遅いのはあまり問題にならんと言うか、
モジュールレベルで完璧に作れてれば
あとは組み合わせるだけなんで、別にどうでも・・
クライアントアプリなら問題にはなるけど
あまりそういう分野で使われてないだろうし。
逆に S2みたいな Hot-Deploy を売りにするセンスが俺には理解できない。
結局つながないと開発できないのかよ、それって DI かよって。
メモリってそんなに食う?これは実感したことないや。
日頃からテストがきちんとできる仕組み用意して
それを実践してるなら、別に DI コンテナ使う必要はないよ。
俺は自分で用意するの面倒だし、
自分のコードなんて全然信用してないから
十分にテストされたものを使うだけの話。
- 62 :
- >>59
>ファクトリのコード削減とAOPによるログ出力くらいなんでしょうか。
それって大きいと思うけど。
それから宣言的トランザクションは使わないの?
今のプロジェクトで DI,AOP 使えれば良いのに、ってかなり思うよ。
ログ出力のコード分量もかなりなもんだし、
トランザクション制御の為に、サービスクラスに abstract execute() みたいなの強制してて超汚ねーし、
必要ない new をやたらと書きまくるやつはいるし(これは別問題か…)
慣れてきてから、DI 使わないプロジェクトで同じ事やろうとしてごらん。
汚いの面倒くさいの… 馬鹿らしくなるよ。
- 63 :
- うちが使ってるフレームワークもどきみたいなのでは
ServiceとDaoは自動生成でSinleton生成コード吐くし、
bean idとクラス名結びつけるファクトリは枯れたxml読み込み
クラスを利用して1クラスで完結してるんですわ。
private AnyService anyService;
と宣言してアクセッサ用意するより
private AnyService anyService = AnyService.getInstance();
で設定したクラスをインスタンス化できた方が若干楽だし
publicなget/setAnyService()があるとそれを利用側プログラムで
呼び出していいと思われても嫌だし。springでセットしたserviceが
入ってるからgetしても問題は無いんだけど。
そうするとspringしらない技術者がヘルプで入ってきたときに
DIっていうのはねっていうところから説明するより全然
教育コストも低いんですよ。
起動が遅くなるのはEclipseでデバッグ時にちょっとした修正で
いちいち時間かかって精神衛生上よくないっていうだけで根本的な
問題ではないけど。
- 64 :
- AOPによるログ出力はブレークポイントつけてステップ実行が当たり前に
なった今存在意義が薄いし、ソースの骨格が自動生成でこみいったとこだけ
手で実装なので、むしろうまく行っているところはトレースログとりたくないし。
トランザクションは昔から使ってるDBコネクションプールがThreadLocalで
好きなとこでstart()/commit()させてくれるのでこれをService内に
明示的に書いてある方が問題があったときにどこでcommit()/rollback()
されてるかわかりやすいと思うんだけど、もう俺の考えが古いのかなあ。
デバッグ担当する人間が全員springのxmlの仕様を知っていないと
「どこでコミットされているかすぐに把握できない」のはめんどくない?
ずっと少数精鋭主義のプロジェクトでやっていけるなら別だけど
- 65 :
- 自己レスだけど
>bean idとクラス名結びつけるファクトリは枯れたxml読み込み
>クラスを利用して1クラスで完結してるんですわ。
結局DIしてるわけだからこのスレとは違っちゃうか
- 66 :
- >>63
それでうまくプロジェクトが回ってるならそれでいいと思う。
教育コストはDIがどうこうよりも、
テストファーストがどうこう、
ステートレスがなんやら、
疎結合だとあれこれ・・の説明に苦心しない?
「ふーん、面倒なんですね」の一言で片づけられた日には悲しくなったよ。
で、今日もまたテストケース書かないコードをコミットしやがる・・・
- 67 :
- >AOPによるログ出力
俺もこれは例示のための例示にしか過ぎないと思う。
通常、AOPはメソッド境界で作用するけど
このレベルで横断的にログ取りたいものなんて殆どないし。
メソッド内部の動作で不審な動きがないかチェックしたいとは思うけど、
取得したい情報なんて処理ごとに異なるし、そもそもAOPでは制御不能。
AOP使う話であれば、トランザクションと認証回りが適切な例だと思う。
>少数精鋭主義のプロジェクトでやっていけるなら
別に精鋭じゃなくても設定くらい読めるから。
トランザクションが何か分かってるなら、書き方・読み方教えて終了。
いろんな場所でトランザクションの開始・終了が出来れば
きっと効率が良いのだろうけど、少数精鋭ならともかく
現実の開発でそれやるとロクなことにならんですよ。
好き勝手に開始して放置して、もうグダグダ。
多分、今まで少数精鋭でやってきて、そういう事態に陥らなかったんだと思う。
- 68 :
- 正直テストファーストはどうかなあと思ってる。
昔みたいにウォーターフォールで仕様変更したら別料金とりますよっていうなら
いいけど、仕様が変わる度にテストケースも保守していくのは
常に詳細設計ドキュメントを保守し続ける位面倒。んで最後にまとめて
作ろうと思って納期迫ってカバレッジ低いテストケース書いてるから
それも駄目なんだけどね。
AOPは結局ログくらいしか思いつかなかったんだよね。Webばっかりだから
認証はそれこそBaseActionかInterceptor(struts2)で入り口でやってあげれば
済むし。
springだけを教えてるなら設定くらいすぐ覚えるだろうけど、
プロジェクト参加当初は業務もプログラムも教えることいっぱいだし、
問題があったときにデバッガで追ってればすぐわかる方がいいと思うけどなあ。
トランザクションの開始・終了はServiceクラス内の同一メソッドでとルールで
縛ってるので、というかdaoも自動生成で複数テーブルに対するトランザクション
管理をしたいと思ったらこれしか書きようが無いんだ
try{
DBManager.startTransaction();
dao1.insert(obj1);
dao2.insert(obj2);
DBManager.commit();
}catch(...){
DBManager.rollback();
}
daoが自動生成なせいで、複雑なDBも処理もdaoに書いて
serviceから呼び出す、daoでトランザクション管理しない
っていうのが徹底されてるのが効いてるのかな。
- 69 :
- 横道にそれるけど、なんか同情したのでいきなりレス。
>>66
Unitテストが義務化されていないからだな。
これはかなり大変。「テストを楽にする」は
意外に動機として大きいから。
仕様書が明確に落ちて無いと末端の子に
テストファーストは難しいけど、デグレードを
未然に防ぐ為のテストセカンド(造語)くらいから
やるのはどうだろう。
自分のコードにバグが無いことの証明だから
ホントはやってて当たり前なんだけど。
- 70 :
- 続き。
疎結合は再利用性。
「ほら、別のプロジェクトでも簡単に使いまわし
できただろ?」
って言える例を作ってやれればどうにか。
ようは教える側がメリットを示すのが良いと思う
(デグレードが減る。使いまわしが楽など)。
ただし、教えられる側が
・時間内手を動かしてさえいれば金が貰える
・バグで人に迷惑をかけてもかまわない
そんな思想だと哲学から変えないとダメ。
- 71 :
- いろいろ経験して
「newを直に書きたくない」
という思想にいたる事が出来れば
DIコンテナのメリットが説明しやすい。
結局ある程度抽象化の概念に
同意していない人には無用の長物かも。
- 72 :
- >>70
疎結合でサービスクラスやアクションを使いまわしたりしないし
その説明では納得できん。ただ共通関数を増やしていくだけでいいだろうに
- 73 :
- 個人的なDIの欠点はデバッガでなければソースを追えないって点だな。
interfaceベースで作ってたら、当たり前の現象なんだが、IDEのパワーをないがしろにしてる。
それでもDI自体は分業に向いてると思うし、俺は好きだ。
- 74 :
- 原理主義者はDIとかアスペクト好きなんだよ
もうほんと、それだけ
問題は、Javaがそもそも原理主義的なコーディングに不向きなことと
現実世界(特にビジネスまわり)がちっとも原理主義に根差してないことが原因で、
DIから得られる現実的なメリットが、ほとんど実感できないくらい
小さくなってしまっていること
- 75 :
- 現実世界も整理すればそれなりにスッキリしてるんだが
現実を現実のまま処理しようとして
ステートフルな世界に走ろうとして失敗してる人が多数居る。
ところで原理主義って何?
- 76 :
- ジャヴァはブルーカラーからのラングエジじゃなかったか?
- 77 :
- DIはログとかトランザクションの管理に便利。
共有リソースの管理に便利。
- 78 :
- なんと言う後付けユーティリティ
- 79 :
- なにか問題でも?
逆に、共有リソースの管理がスタティック変数でまかなえる場合や、ログ・トランザクションをそこまで徹底しない場合は、DIコンテナ不要。
- 80 :
- ログ・トランザクションは徹底というか、単純なルールが適用できる場合にDIが有効か。
- 81 :
- >>72
ごめんね。俺が思ってた疎結合の話に
君が思うようなサービスクラスやアクションを
含んでいなかった。
そしてDIにたどり着く前の段階の前提なんだ。
>>66の言う教育の時に自分がどう行動するかを
書いてみた。
サービスとかアクションならモックを引き合いに
出すかなぁ。モックの意味を理解する人ならわかって
くれるかもと思う。
>>72を説き伏せようとは思っていないから
けんか腰にならないでね。
- 82 :
- >>73
同じ事がインターフェースを
たくさん使ったソースコード(非DI)を
新人さんが読んでいる時に起こっていた。
あるメソッドが呼ばれているはずなんだけど
呼び元にEclipseで飛んでもインターフェース
にしか辿り着けないという形。
力技でもどうにかできるようにしたければ
インターフェース使わずに書くのも良いと思う。
どこで切るのかの問題かもしれないけど。
- 83 :
- つctrl+t
俺もDIは好かんけど
eclipseもまともに使えないヤツには無理
- 84 :
- なんですとぉ!?
- 85 :
- POJOってどうよ。アレを実現するための設定も
面倒に感じるんだが。
- 86 :
- >>85
あまりに漠然としすぎててどの話をしてるのか分からん。
>>68
ネストしたトランザクションがスマートに記述できない時点で
もう面倒だと思いますよ、俺は。
それでもなお俺様フレームワーク最高ですか?そうですか。
- 87 :
- トランザクションのネストってどんなケース?
外側トランザクションの中に内トランザクションがいくつかあるの?
内トランザクション1がコミット成功して内トランザクション2で
失敗したらどうなるの?
- 88 :
- 内1のトランザクション状態を内2で引き継いで
内2で失敗した時点で内1もひっくるめてロールバックされる。
コミットが行われるのは外のトランザクションが成功した時。
- 89 :
- 外側で宣言してれば内側のコミットは無視されて、
内1だけ呼びたい時は内1のコミットをアテにして、
内1、内2って呼びたいときは内1の中に書いてあるトランザクション処理を
無視できるから楽ってこと?
- 90 :
- >>85
POJO と abstract class タイプフレームワークの綱引きがあって、
睡眠不足で寝ぼけてると、見当違いのところに abstract class タイプのフレームワークを適応しちゃったりする。
使い分けは、きっちりやりたいね。
ちゃんと睡眠とって、すっきり脳味噌で POJO を書こう。
今大人気だから覚えといて損はないよ
- 91 :
- POJOはフレームワークに依存、
StrutsクラスはStrutsに依存。
おまえらバカなんじゃね?
- 92 :
- 意味不明
- 93 :
- >>91
依存してるかどうかじゃなくて依存をコントロールできることが重要なのに、何言ってんだおまえは。
- 94 :
- たかが Bean Builder に御大層な名前が付いただけ。
- 95 :
- 長くこの業界にいて思うこと。
構造化プログラミングの時だってごく少数の優秀な人は
わかりやすくて綺麗な構造化をしていた。OOPの時代になっても
優秀な人の割合は変わってない。凡人がソースを書くときの
汚さが、構造化の時よりちょっとマシになっただけ。
でもその恩恵はインターネットの普及により情報が得やすく
なったせいかもしれない。
- 96 :
- 根幹部分は自分で書いて、ビジネスロジックだけ構造化OOP使いに書かせるから問題なし。
DIなら上流PGの実装が間に合わない時はDAOの具体実装をダミーにしとくとか調整も出来るよ。
- 97 :
- >>89
このケースに限ってはそう。
でも本質はコードに横断的情報が含まれないことが
多くの利益をもたらすって話なんだけど。
そのロジックの処理の本質にトランザクション管理が関与するのかって話。
必要ないのに手続きのために書いてるのなら、
ノイズが乗ってるのと同じこと。
追い出せるなら追い出したいと、なぜ考えないのか。
>>95
情報が得やすくなったのは確かだけど
情報を得ようとする人がたいして増えてないのもまた事実で。
成長待ってても埒があかないから、いろいろな話をしてみるけど徒労に終わる。
探せば情報が得られる分、スキルの格差はむしろ広がってるのでは。
- 98 :
- >なぜ考えないのか。
なぜそんな上から目線なのか
どこからどこまでを同じトランザクションにまとめないといけないのか、
は本質的な処理だろ。マーチンファウラーの提唱するような薄いサービス層の
ポリシーを守っていれば、トランザクション管理をxmlに置くのか
Serviceメソッド内に置くのかの違いでしかない。トランザクションの
範囲を確認するのに設定ファイルを別に開くよりは見やすい。
注文と残高を同時更新する場合と、残高だけを更新する場合で
Serviceを分けなくても良い(前者の場合でも残高だけ更新Serviceを呼び出しても
よい)というのは確かにメリットだと思う。
- 99 :
- 今はネットで回答だけ得られるからね。
昔は本とか読むしかなかったから、いきなり答えが得られることは少なかった。
だからどうしても書いてあることを理解して自分で応用する必要があった。
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
CVS導入スレ〜 Rev.3 (837)
C++でXML(主にxerces)やろう! (675)
【Java】DIコンテナって本当に便利か? (461)
[無料でラクラクJava帳票作成] JasperReports使い集合 (317)
音声合成プログラムを作りる (320)
D言語 Part31 (270)
--log9.info------------------
【原発】原子力発電所436.6 【甲状腺ガン】 (881)
お前らのipodに高確率で入ってる曲 (273)
VIPでトレネしようぜwwwwwwwinTW (512)
赤座あかり (720)
好きな兵器を書くと欠点が書かれるスレ (956)
【iPhoner】アプリコード配るよ〜【集合】 (491)
死刑反対派って本当にいるの? (233)
お前ら、何で1万円札に1万円の価値あると思うの? (360)
チンチラし放題のアイマススレ (859)
真夏の夜のR夢 (434)
【ロリショタ祭り】vipで晴空物語【新規復帰】 (817)
ダークソウル (967)
WEC ワールドエロゲスレクラシック (349)
プラモスレサンデー (788)
【連邦】VIPでガンダムオンライン連邦【100人同時対戦】 (982)
RPGツクール・オブ・ザ・デッド (348)
--log55.com------------------
docomo arrows NX F-01J Part19
SONY Xperia 10 Part 2
ASUS ZenFone 3 Ultra Part25
Samsung Galaxy S7/S7 edge 総合スレ Part49
【広告URLブロック】FilterProxy Part12.1
ASUS ZenFone 2 Laser ZE500KL SIMフリー Part41
au AQUOS R SHV39 Part8
SHARP AQUOS zero Part5