Java Spring Frameworkを語るスレat TECH
Java Spring Frameworkを語るスレ - 暇つぶし2ch426:デフォルトの名無しさん
05/06/03 12:15:51
>>425
Mozilla独自のXULより標準規格のXFormsのほうが良いのでは?
MozillaもOpenOffice.orgもXFormsに対応する上に、
Chibaを使えばXForms未対応のブラウザに対して
HTML+JavaScriptに変換してから送信することで
大部分のブラウザに対応できます。

Chiba (サーバーサイドJavaライブラリ)
URLリンク(chiba.sourceforge.net)
MozillaとXForms (Mozilla1.8/Firefox1.1で対応予定)
URLリンク(www.mozilla-japan.org)
[XForms 00031] XFormsのためのwiki (村田真氏がMozillaでXForms推進)
URLリンク(www2.xml.gr.jp)

427:デフォルトの名無しさん
05/06/03 12:41:43
>>426
XULへの必要性は一般の人にとっては低いとは思うが、
>>425は、ブラウザベースクライアントじゃなくて、リッチクライアントとして
XULを使うことを前提に書いてるんじゃなかろうか。
JSF経由でSwingとかFlashをクライアントにするノリで。

428:デフォルトの名無しさん
05/06/03 12:42:00
sage

429:デフォルトの名無しさん
05/06/22 09:39:06
禿げオヤジは意外とおとなしかったな。

430:デフォルトの名無しさん
05/06/25 15:34:01
海外では50%以上のプロジェクトで使われていて
ほぼデファクトスタンダードらしいが、なぜこのスレは伸びないの?


431:デフォルトの名無しさん
05/06/25 18:21:20
まあ、DIスレも伸び悩んでるし、
カテゴリとしてマイナーなんでは。日本では。

432:デフォルトの名無しさん
05/06/26 08:56:09
>>430
DIは、使い始めれば空気みたいなもんで、とくに議論することもなくなるから。

433:デフォルトの名無しさん
05/06/26 16:54:53
つーかSpringがホントに便利なのって純粋なtype2,type3のInjectionその物より、
コンテナが作ったProxyに対するAOPでしょ?

434:デフォルトの名無しさん
05/06/26 22:33:01
DIってのは、そういうものを便利にするための裏方だからな。

435:デフォルトの名無しさん
05/06/27 10:43:51
このスレ生きてるみたいだから質問させてくれ

proxyでAspectをweavingする事の弱点って何だ?
漏れが把握しているのは

1.自分自身のメソッドを呼び出すとAspectがかからない。
2.visitorみたくthisを渡して処理させるとAspectがかからない。

他に注意点ある?

436:デフォルトの名無しさん
05/06/27 11:31:59
ものすごくはらへった。

437:デフォルトの名無しさん
05/06/27 11:41:45
俺もだ。

438:デフォルトの名無しさん
05/06/27 13:49:43
いまさら同意。

439:デフォルトの名無しさん
05/07/05 11:09:42
1.2.2リリース記念

440:デフォルトの名無しさん
05/07/05 13:38:30
>>439
どこが変わったの?

441:439
05/07/05 15:43:58
詳しく見てない&試してないけど、注目した一文は;

『added dedicated support for Hibernate Annotation 3.0 beta 2』

442:デフォルトの名無しさん
05/07/05 17:36:12
>>441
でも、前からHibernate Annotations使えてたよ。

443:デフォルトの名無しさん
05/07/05 22:32:17
つうか、Doclet のことを言ってるんじゃあるまいな。

444:デフォルトの名無しさん
05/07/06 03:19:27
アノテーションってそんなにいいもんなんでしょうか。
DIでせっかくコードから煩雑な記述を追い出したのに、
またコード中に埋め込んで、回帰と言うか退化と言うか。

コンパイラに対する指示を埋め込むのは意義が大きいと思うけど。

445:デフォルトの名無しさん
05/07/07 10:24:52
>>443
ここの最後にやりかた書いてあるよ。
URLリンク(www.fk.urban.ne.jp)

446:デフォルトの名無しさん
05/07/07 10:25:46
>>444
アノテーションは、XMLより記述が楽だし、ソースから得た型の情報を使うことで記述量自体が少なくできてるから、そう煩雑でもない。
クラスに関する情報をソースファイルに一元化できる効果もある。
なによりコンパイラによる静的チェックが効くし、Javaソースエディタでの補完が効く。

447:デフォルトの名無しさん
05/07/08 22:00:29
DIってテストしやすくなる?
単体まではいいけど、結合で結局アボーンな感じがするのだけど。

まぁつまるところは設計能力か・・・

448:デフォルトの名無しさん
05/07/10 00:55:34
アボーンって、具体的にはどういう問題がでてくると思う?


449:デフォルトの名無しさん
05/07/13 20:03:02
TransactionProxyFactoryBeanにtagetってフィールドがあるんですけど、これシングルトンなんです。
マルチスレッドでここに処理が殺到した場合、スレッドセーフにトランザクションさばけるんでしょうか?
教えてください。

TransactionProxyFactoryBean
URLリンク(www.springframework.org)

450:デフォルトの名無しさん
05/07/13 20:42:56
>449

そりゃ、targetしだいだろ。targetがスレッドセーフなら、問題ない。

451:名無しさん
05/07/13 21:00:03
同時に異なるスレッドの異なるtargetがシングルトンのTransactionProxyFactoryBeanにセットされにきたらどうなりますか?

452:デフォルトの名無しさん
05/07/13 23:18:19
オブジェクトの数とスレッド数は別ものとして考えないと。

ちゃんと考えられてるだろうから、
単一のオブジェクトの同じメソッドを
複数のスレッドが並行して駆け抜けることは全然OKなように
つくられてるはず・・・(たぶん)

453:デフォルトの名無しさん
05/07/14 16:28:52
蒼ざ(ry

454:デフォルトの名無しさん
05/07/14 19:22:10
どうやらtargetもシングルトンじゃないとダメみたいですね。

455:デフォルトの名無しさん
05/07/16 17:28:30
>>462
それはプラットフォームによる。
・GUIは大抵そう。(OSから飛んでくるイベントの処理は、イベント毎の状態保持が必要。
            もっとも、同じ要素に複数イベント飛んできたら、単に順次処理する事が多いんで、
            本当のスレッド並列処理はそんなに必要ないと思う。)
・Webアプリ周りも大抵そう。(例の(Statefull)Servletあたりが有名)
それ以外の場面で、常にインスタンスとスレッドを別に考えるのは、どーかと思う。
結局インスタンス数を減らしてまでメモリー消費を避けたい特殊な場面(大規模アプリ、組込みアプリ)
に固有のやりかただと思う。

456:455
05/07/16 17:30:24
ああ>>451-452の流れか。>>455は取り消し(ワラ

457:デフォルトの名無しさん
05/07/19 10:34:04
というか誰にレスしてんだ

458:デフォルトの名無しさん
05/07/24 22:38:13
これが最近有名なJSFって奴ね。
Javaは最新の技術追うのが大変(@@)

459:デフォルトの名無しさん
05/07/25 01:15:53
==============================
キチガイが狂った独り言を書き込み中
==============================

460:デフォルトの名無しさん
05/07/25 07:37:48
>>441
applicationContext.xmlの中でHibernate Annotationsの設定がかけるようになるってことみたいだね。
LocalSessionFactoryBeanを使う場合は、hibernate.cfg.xmlを書いておく必要があった。

461:デフォルトの名無しさん
05/08/06 22:29:31
Spring1.2.3でProxyFactoryBean使おうと思って

[ sample.xml ]
<beans>
<bean id="test" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyTargetClass"><value>true</value></property>
<property name="target"><ref local="person"/></property>
<property name="interceptorNames"><value>advisor</value></property>
</bean>
…略…
</beans>

[ sample.java ]
BeanFactory factory = new ClassPathXmlApplicationContext("/com/mamezou/aop/proxydi/sample.xml");
Person person = (Person) factory.getBean("test");
person.setName("Hoge");

ってやるとCGLIBがねぇよってエラーになって、
CGLIB2.1のjarクラスパスに突っ込んでやるとエラーになるんだけど…。

対処方法ってなんかある?

462:461
05/08/08 00:45:20
事故解決しますた。orz


463:デフォルトの名無しさん
05/08/08 01:32:41
いちお、解決方法きぼんぬ

464:デフォルトの名無しさん
05/08/08 12:18:04
今度は aopallience がねえよって怒られて
それを修正したとかそんな流れ?

465:461
05/08/08 20:07:27
遅レス、スマソ。

CGLIB2.1入れても
java.lang.NoClassDefFoundError: org/objectweb/asm/Type
って出たので、ASM入れただけです。

_| ̄|○|||

ASMは1.5.3入れました。2.0だと
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
が出ます故。これで動いたは動いたケド、正しいかどうかは…。


466:デフォルトの名無しさん
05/08/08 20:27:13
>>464
だいたいあってたね。

467:デフォルトの名無しさん
05/08/10 12:47:00
だいたいってことは、正確にはどーすればよいわけ?

468:デフォルトの名無しさん
05/08/10 20:51:17
CGLIB とかのライブラリは
Spring 付属の jar をぶっこんだ?
まだ 1.1.7 使ってて 1.2 系は試してないけど
付属の jar 入れとけば間違いは少ないと思う。

469:461
05/08/10 20:53:28
ageます。スマソ。

>>467
asm-1.5.3.jar
cglib-2.1_2.jar
をWEB-INF/lib/に放り込んでクラスパス通すだけでつ。
「ProxyFactoryBean使うときはCGLIB入れろ」
ってドキュメントに書いてあったのですが、
CGLIB使うときはASM入れないないとNGなんで、
URLリンク(prdownloads.sourceforge.net)
URLリンク(forge.objectweb.org)
のミラーからDLしてください。

…というコトではない?


470:デフォルトの名無しさん
05/08/10 21:14:42
with-dependency の方のディストリビューション落とせば
添付の jar を必要に応じて加えるだけで
外部のライブラリは不要だったと思うんだけど。。

471:461
05/08/10 21:47:00
>>470
サンクス。

>with-dependency
こっちじゃなくて、spring-framework-1.2.3.zip落としちゃって…。

URLリンク(www.techscore.com)
にしっかり書いてありました。orz


472:デフォルトの名無しさん
05/08/19 12:55:20
Spring Beans XML Editor (Spring IDE for Eclipse)
URLリンク(springide.org)
Screen Shot 見る感じだと
とりあえず欲しい機能は結構揃っているような。

473:デフォルトの名無しさん
05/08/25 16:33:37
URLリンク(www.springframework.org)

474:デフォルトの名無しさん
05/09/07 09:38:35
KingはRodが大嫌いなんだとさw

URLリンク(houseofhaug.net)

475:デフォルトの名無しさん
05/09/07 09:53:15
Hibernate3 でトランザクション周りが結構変わって、
Spring とかなり方向違うなぁと感じたりはする。

Hiernate の Session Factory から getCurrentSession() 呼んだら
思いっきり怒られたりとか。
JTA が必要だったとは知らなかった。

なんかそんなことが続いてる。。

476:デフォルトの名無しさん
05/09/13 23:10:59
Springを勉強してます。
サーブレットにDIしたいクラスのsetter作って
動かしてみたのですが、NullPointerException...
サーブレットではsetterインジェクション(?)できないんですか?
ContextからgetBeanすれば普通にとれるんですが。。


477:デフォルトの名無しさん
05/09/14 00:14:32
>>476

普通はBeanにsetter/getter作るでしょ。
むしろ、setter/getter作ると自然にBeanになる。
MVCからやり直s(ry


478:デフォルトの名無しさん
05/09/14 00:27:50
>>476
サーブレットでDIするためにどういう設定したの?

479:デフォルトの名無しさん
05/09/14 00:40:33
>476
Webコンテナが管理しているサーブレットインスタンスを
そのサーブレットが呼ばれる前に,アプリ側から取得する方法があるとでも?

480:デフォルトの名無しさん
05/09/14 01:39:52
しかし、いろんなこと考える奴がいるもんだな・・・ある意味感心したw

481:デフォルトの名無しさん
05/09/14 02:41:41
>>479
web.xmlにはプロキシサーブレットを登録して、そのときパラメータで実際のサーブレットクラスを指定するような実装にすればできんでもない。

482:476
05/09/15 01:29:23
>>477-481
勉強不足でごめんなさい。
サーブレットからビジネスロジックを呼び出すのに
自分でビジネスロジックのインスタンスを作らずに、
setterを作って、ビジネスロジックをDIしようとしたのですが。。。
やっぱり無理なんですかね?

483:デフォルトの名無しさん
05/09/15 02:32:53
>>482
便乗してTapestryの宣伝でもしてみるか。

Tapestry-4.0だと、それに相当する事が出来るようになってる。
Tapestry-4.0自体はDIコンテナにHiveMind使ってるけど、
HiveMindとSpringを連携させる方法もあるので、
Springで管理してるオブジェクトをTapestryのページや
コンポーネントにDIすることできて便利。


484:デフォルトの名無しさん
05/09/15 03:15:06
>>483
日本語のドキュメントはどこにありますか?

485:デフォルトの名無しさん
05/09/15 16:21:13
あなたはいぢわるな人だ

486:デフォルトの名無しさん
05/09/19 09:44:33
で、実際に開発で使ってる実績ってあるの?
Spring。

487:デフォルトの名無しさん
05/09/19 09:47:35
何をもって実績と呼ぶかを定義しないと
そりゃどっかで使ってるさ。で終わってしまう。

488:デフォルトの名無しさん
05/09/19 19:12:43
どっかって・・・。
どこでも使ってないんじゃないの、と思ってるんだが。

489:デフォルトの名無しさん
05/09/19 20:59:49
おれんとこの現場は使ってる

490:デフォルトの名無しさん
05/09/19 21:06:20
>>488
そうかもね。

というか、DI自体にメリットというか魅力を感じない。
いや、考え方とかそういったのは素晴らしいと思うよ。

だけど、実際には客先にコストダウンとかのメリットがある訳じゃないし、
実行速度が上がるわけじゃない。
まぁ、テストを簡単に行えて品質は上がるのかもしれない。


だけど、問題は、DI使ったからといって、修正とかが楽になるかと言えば、答えはNO。
大抵の修正はメソッドの呼び出しとか、そういったものまで結構変更になる。

なのに、下手にDI使ってインターフェースとか定義してたら、
結局インターフェースもクラスも関連するもの全部修正しないといけない。

つまり、殆どの場合、DI使うことにより、修正の手間は倍以上になる。
作る時に、無駄ともいえるものを作るんだから、下手したら4倍近い手間。

世間がこれからどうなるか知らないが、すくなくても俺の会社では
DIは明示的には使わないという方向で決まった。
(ライブラリの内部とかで使われてるとかは知ったこっちゃ無い)

491:デフォルトの名無しさん
05/09/19 22:21:44
インターフェイスをきるときには、システム将来計画等から予想して、
ある程度変更になりそうな部分を見極めとかないと意味は無い
DIか否かより、結局は設計の問題になると思うけど

492:デフォルトの名無しさん
05/09/19 23:06:57
>>490
君の言ってることはDIとは直接関係ないかなぁ。
単にインターフェースへのプログラミングってやつの是非を語っているだけではないのか?
まぁ、それも確かに賛否両論よく議論されているネタだけどね

DI使うと部品作って組み立てるプロセスが面白くて、楽しく開発は出来るんだけど、
アホには使いこなせないからあまりポピュラーにはならないかもしれない

493:デフォルトの名無しさん
05/09/20 00:09:30
SimpleFormControllerでvalidatorを行おうとしています。

<bean id="confirmEntryController" class="controller.ConfirmEntryController">
<property name="commandClass"><value>model_entity.User</value></property>
<property name="commandName"><value>user</value></property>
<property name="validator"><ref local="userValidator"/></property>
<property name="formView"><value>userEntryView</value></property>
<property name="successView"><value>confirmView</value></property>
</bean>

エラーを表示するのに、spring:bindを利用しているのですが、
-------------entry.jsp-----------------------------------------
<spring:bind path="user.name">
<FONT color="#FF0000"><c:out value="${status.errorMessage}"/></FONT>
</spring:bind>

entry.jspを表示するときに、次のようなエラーになってしまいます。
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'command' available as request attribute

なにか見落としがあるのでしょうか?
あうあぅ締め切りがあさってです。助けてください・・・

494:デフォルトの名無しさん
05/09/20 00:11:05
あーーすみません
エラーメッセージがまちがっていました。。
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'user' available as request attribute


495:デフォルトの名無しさん
05/09/20 01:41:00
まだ490みたいなこと言う人居たのか。すげえな。世の中って。

496:デフォルトの名無しさん
05/09/20 02:29:53
MVC フレームワーク使ったことないんで
(Viewは絶対にVelocityが良い派。
コントローラはStrutsがベタ打ちっぽくて好き派。)
大きく外してるかも知れませんが

URLリンク(64.233.179.104)
>Bind 時に
>javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 《コマンド名》 available as request attribute
>という例外が発生する事があります。 これは、Bind するコマンドオブジェクトがリクエストに保存されていないのが原因です。
>コントローラに SimpleFormController を使っている場合、processFormSubmission() メソッドで、
>super.onSumit(request, response, command, errors) を呼び出すと、例外は発生しなくなりました。参考までに。
ConfirmEntryController でそれに類する処理が必要かどうか、存在するのかの確認と、
デバッガで動かしてリクエストの中身を覗いてみてはどうでしょうか?

497:デフォルトの名無しさん
05/09/20 20:30:51
>>495
そうでもないんじゃない?

実際、ある程度予測できる範囲やちょっとした修正なら、DIだろうが何だろうが修正は簡単。
だけど、大抵の場合って、そもそもの仕様から引っくり返されるんだよね。

『ごめん。やっぱりこの機能も追加して』って一言で。

そうなると、確かに>>490の言うような状態に陥る。

498:デフォルトの名無しさん
05/09/21 01:34:49
インターフェース直して、テストコード直して、実装直す。
簡単ジャマイカ

499:デフォルトの名無しさん
05/09/21 01:44:41
>>497
顧客の「やっぱり」が予想できる場合と出来ない場合で違うと思う
予想できない場合は、たとえどんな作り方をしてても無駄なわけだし

500:デフォルトの名無しさん
05/09/21 03:19:34
DIの肝って、「実装を交換できる」ってこと。
あとは想像力さえあれば、大抵の状況は、インターフェイスの修正無しになんとかできるはずだが。
まぁ、インターフェイスの設計がへぼいとどうにもならない場合があるけど。

501:デフォルトの名無しさん
05/09/21 05:36:55
べつに、実装交換しなくても便利なんだけど。
実際のアプリケーションでDIでつなげたクラス同士を切り替えることなんてほとんどない。
それでも、つなげることをやってもらえるだけで便利。

502:デフォルトの名無しさん
05/09/21 23:44:25
>>501
コードでつなげる処理を書くよりも便利なの?

やっぱり自分で試して体感してみるしかないかな。

503:デフォルトの名無しさん
05/09/22 06:51:23
自分でさわらずに批判してもしかたないよ。

504:デフォルトの名無しさん
05/09/22 09:06:33
DI に関する話をココでやって
Springの話をDIスレでやると言う
ねじれ現象が起きてるのは何故ですか?

505:デフォルトの名無しさん
05/09/22 11:53:07
ながいものはねじれるというのが物理法則の基本だから。

506:デフォルトの名無しさん
05/09/23 09:54:47
そもそもDIスレなんてのかあったのかって話。

507:デフォルトの名無しさん
05/09/23 17:54:03
>>506
Dependncy Injectionを語るスレ
スレリンク(tech板)

508:デフォルトの名無しさん
05/09/23 23:10:30
多少綴りが間違ってるのと、DI という略語を併記しなかった失策っぽい。

509:デフォルトの名無しさん
05/09/24 03:31:24
>>507
一月半もレスないのか。
S2スレはFAQの件で盛り上がっているというのに……。

510:デフォルトの名無しさん
05/09/24 03:33:09
本題ではあまりもりあがらない件

511:デフォルトの名無しさん
05/10/05 11:18:48
>>449の件って、>>454が正解なんですか?
だれか解説お願いします。

512:デフォルトの名無しさん
05/10/19 09:37:25
こんな記事があったんですが、Springが主流になりますかね?
URLリンク(www-128.ibm.com)

513:デフォルトの名無しさん
05/10/19 10:43:13
>>512
読めん!

514:512じゃないけど
05/10/19 16:48:17
>>513
これなら読めるか?
URLリンク(www-06.ibm.com)

515:デフォルトの名無しさん
05/10/19 17:50:56
>>514
読める!

516:デフォルトの名無しさん
05/10/23 21:45:48
おまいら、SpringのTransaction管理って使ってますか?


517:デフォルトの名無しさん
05/10/23 22:15:15
使ってない。
むしろ自分でトランザクションコード書いた方が安心する。
別に大した労力じゃないし。
分散トランザクションやろうとしたら別だけど。

518:デフォルトの名無しさん
05/10/23 22:20:08
そしてデッドロック

519:デフォルトの名無しさん
05/10/23 22:26:25
デッドロックに対して気をつけなきゃいけないことは、トランザクション管理も
ハードコーディングも一緒なり

520:デフォルトの名無しさん
05/10/24 00:00:28
>>517
try/finally/try/catchをいちいち書くの面倒じゃない?

521:デフォルトの名無しさん
05/10/24 00:22:16
>>520
書くと安心するw
いたるところで書くわけでもないし苦痛でもない。

522:デフォルトの名無しさん
05/10/24 14:16:34
ひとりとかふたりで開発するならそれでもいいんだけどねぇ。
人数多くなってわけわかんないコーダーが含まれるようになると、それじゃ怖い。

523:デフォルトの名無しさん
05/10/24 15:15:19
投げて上で処理するとか。
一箇所で処理できる仕組みであれば何でもいいけどな漏れは。

524:デフォルトの名無しさん
05/10/24 17:24:13
投げて上で処理ってどういうこと?
上でconnection.rollback();
を実装するという意味だよな?

525:デフォルトの名無しさん
05/10/24 21:00:01
>>523
その為にAspectとか有るんじゃないか?

526:デフォルトの名無しさん
05/10/24 21:21:21
そこでEntity Beanですよ。

527:デフォルトの名無しさん
05/10/24 23:28:43
コミット、ロールバックもろもろ書いてあるメイン処理テンプレートソース
用意してコレ使えという。

528:デフォルトの名無しさん
05/10/24 23:32:53
要するにAOPは使いたくないってこと?

529:デフォルトの名無しさん
05/10/25 00:27:49
トランザクションだけはコードで書きたい。

530:デフォルトの名無しさん
05/10/25 09:47:45
テンプレートを使うやり方ってtransactionScriptみたいなヤツ?
あれって複数Daoに更新命令メッセージ渡したい時にうまくasid守れるのだっけ?
ドアホな質問だったらスマソ

>>529
自作インタセプタでAOPするのも嫌なの?

531:デフォルトの名無しさん
05/10/25 10:35:43
ACID

532:530
05/10/25 11:30:31
し、しまった、ゴメン恥sage

533:デフォルトの名無しさん
05/10/25 21:41:41
Seasarを選ばなかったおまいらは非国民

534:デフォルトの名無しさん
05/10/25 21:55:08
日本で作ったところくらいしか、とりたてて特徴がないからなぁ。
逆にSeasar選ぶのは国粋主義だとは言える。

535:デフォルトの名無しさん
05/10/25 23:30:51
>>530
>>インタセプタ
それならいいかも。コードかけるから。

536:デフォルトの名無しさん
05/10/26 01:28:04
>>534
国粋主義が悪いかのように匂わす藻舞は共産主義者

537:デフォルトの名無しさん
05/10/26 01:34:42
>>536
ウヨ厨発見。
「国粋主義」ってそもそも悪口だし。悪いに決まってる。

538:デフォルトの名無しさん
05/10/26 10:14:29
Javaが日本発な言語でない以上、
Seasar2もSpringもその意味では五十歩百歩だろ。
使いやすい方使えばいいのよ。

539:デフォルトの名無しさん
05/10/26 13:35:27
>>534
どっちがいいのかは個人の判断だと思うけど、
かなり違うよSpringとSeasarは。

特徴がないと思っているのは単なる勉強不足。

540:デフォルトの名無しさん
05/10/26 16:42:29
>539
で、両者の顕著な違いってどの辺り?
軽量DIコンテナ+AOPサポートって言う
コアな考え方が同一な以上、
枝葉は多少異なるだろうけど、
幹の部分は大差なく感じるんですが。

それぞれのサブプロジェクト(MVCフレームワークとか)は
モデルが大きく異なるだろうけど、限りなく枝葉な問題だし(私には)。
そこの違いがでかいんだよと言われると、大変困るが。

541:デフォルトの名無しさん
05/10/26 16:59:35
ロジックとかDAOを呼び出すだけで使ってる分にはあまり差を感じないけどな。

542:デフォルトの名無しさん
05/10/26 17:18:39
>>540
DIだとあまり変わらないかもね。

ただ、Seasarの新しいバージョンだと、DIが結構変わったみたい。
XMLはほとんど書かないらしい。

AOPは結構違う。
JavaWorldに出てたけど、同じAOP AllianceのAPIにもとづいているとは
思えないくらいに設定の仕方が違う。

543:デフォルトの名無しさん
05/10/26 20:24:41
設定方法なんか、どうだってなるわけだが。

544:デフォルトの名無しさん
05/10/27 00:49:30
DIやAOPよりも、自前でJTA実装用意してるかどうかが大きい気がする
Tomcatやローカルアプリに対して、安定したJTA環境+AOPによる宣言トランザクションを提供出来るというのが
自分から見たS2の売りかな?
Springも外部のJTA実装を用意すれば一緒なんだけど、出来ればSpring内で実装まで用意して欲しい

545:デフォルトの名無しさん
05/10/27 09:37:46
ん~、煽りじゃなくて教えて欲しいのだが、自前JTAってそんなにいいの?

どうせAP鯖上で動くならそのAP鯖のJTA使えばいいと思う。
つっか、AP鯖のJTA使うと、提供されている管理画面を
使えちゃったりして便利なんだよね。使用状況とか一目瞭然だし。

546:デフォルトの名無しさん
05/10/27 11:05:18
>>545
> どうせAP鯖上で動くならそのAP鯖のJTA使えばいいと思う。

AP鯖ならそれ使えばよろし。
「Tomcatやローカルアプリ」の場合の話。

547:デフォルトの名無しさん
05/10/27 11:50:06
JOTMとか?

というか部品を用意してあるかどうかなんて些細な差と言うか、
そもそも比較項目にすらならん気がする。

224 にも張られた内容見るといろいろ差があるなとは思う。
結局AOPに対するアプローチが一番の違いか?
Spring はどこまでも POJO マンセーな感じ。
良い意味でも悪い意味でも。

548:デフォルトの名無しさん
05/10/27 12:38:18
>>547
JTA実装するかしないかの差は、両者のトランザクション管理に対する考えの違いでもある。
JTAを標準としてJDBCトランザクションを排除していこうとしてるのがS2
JDBCもJTAも、DIコンテナがラップして利用者に統一的に使って貰おうとしてるのがSpring

549:デフォルトの名無しさん
05/10/27 12:39:51
>>547
POJOマンセーはSeasarのほう。
Springには、何かしたかったら、こういうインターフェースを実装しろ
というのがいろいろあるけど、Seasarはそういうのがほとんど無い。

550:デフォルトの名無しさん
05/10/28 01:25:53
jsfを使うんだけどspringはどの段階で作り始めればいいんですか?
ある程度jspとかbeanとか決まってから?

551:デフォルトの名無しさん
05/10/28 09:21:16
>>550
君の脳内が整理されたら。

552:デフォルトの名無しさん
05/10/28 10:56:12
Spring 自体は作らんだろ。作らんよね?
Spring 自体は作りませんね。

553:デフォルトの名無しさん
05/10/28 14:25:10
そんなレスはいらんねん

554:デフォルトの名無しさん
05/10/28 18:52:00
なんかすごいヤシが来たな、ワクワク

555:デフォルトの名無しさん
05/10/30 17:47:22
(・∀・)ハイーキョ

556:デフォルトの名無しさん
05/10/30 21:02:51
>>555
気が早いよ。ヽ(`Д´)ノ
もう少しまってろ。

557:デフォルトの名無しさん
05/10/31 01:27:45
保全

558:デフォルトの名無しさん
05/10/31 14:31:11
ところで、Springを使ってサービスを2つ起動しているけど
片方のサービスを止めたり、動かしたりする場合のサンプリングが解らず・・・・

筆不精で表現が不十分ならすまん・・・。

559:デフォルトの名無しさん
05/10/31 14:49:38
>>558
サービスとSpringは直接関係ないだろ。

560:デフォルトの名無しさん
05/10/31 14:50:21
つうか、サンプリングって新しいな、おい。

561:デフォルトの名無しさん
05/11/01 13:36:58
統計やってるんだろう

562:デフォルトの名無しさん
05/11/01 14:30:30
springとhibernateを使ってるのですが、以下のようなコードでDBからデータを取得した時に
ログ情報はどうやって出すのでしょうか?
出したい情報としては、どのテーブルに、どんな条件で取得or更新処理等を行っているかです。
SQLの場合は、SQLそのものをログに出せば良かったのですが、spring+hibernateになった場合
SQLの時と同等の内容をログに出力する方法が分からなくなってしまいました…。

Hoge hoge = (Hoge)getHibernateTemplate().get(Hoge.class, primaryKey);

このgetの中でやっている事をログに出したいです。

563:デフォルトの名無しさん
05/11/01 19:08:20
Hibernate の設定でログにSQLを吐くってのがあったはず。

564:デフォルトの名無しさん
05/11/02 00:43:48
springの設定でhibernatePropertiesに
<prop key="hibernate.show_sql">true</prop>
を設定

565:デフォルトの名無しさん
05/11/02 10:31:05
>>563,564

ありがとうございます!
おかげさまで、SQLは出力されるようになったのですが、
出力されるSQLのWHERE句の条件部分が、実際の値に置換する前の「?」に
なってしまいます….
この「?」の部分が実際の値に置換された状態のSQLを出力する事は出来ないのでしょうか?

566:デフォルトの名無しさん
05/11/05 20:04:59
さっぱり関係ないんだけど、PreparedStatementに値が入れられた後のSQLを
吐き出させられないかと思うことはよくあるな。

567:デフォルトの名無しさん
05/11/05 20:42:17
DB側でログだすしかないね。
JDBC4でやってくれないのかなぁ

568:デフォルトの名無しさん
05/11/06 00:19:10
そもそもJDBC内で完全なSQL生成してるわけじゃないから無理だよな。
そんなことしてたらPrepareStatement意味ない。。

569:デフォルトの名無しさん
05/11/06 01:52:33
なんかのクラスのログレベルを下げれば、
どんなパラメータを入れたか確認できるけど一応。
どのクラスかは会社に居ないので確認できましぇん

570:デフォルトの名無しさん
05/11/06 15:24:20
Spring + Hibernate3 でテストしてた時は
パラメータも表示されてたと記憶してるが。

571:デフォルトの名無しさん
05/11/07 09:55:19
ドライバにトレースオプションとか無いの?

572:デフォルトの名無しさん
05/11/08 01:15:17
>>566
p6spyってのを使えばできるらしいよ。

573:sage
05/11/13 01:07:52
SpringWebMVC使ってるんだけど、
フォーム上の二つの入力フィールドの値を、
コマンドオブジェクトの一つのプロパティにBindすることってできないんだろうか?

574:デフォルトの名無しさん
05/11/13 01:12:45
JavaScriptFrameworkかとおもた

575:デフォルトの名無しさん
05/11/13 13:14:15
よし、今からSpringを勉強するよ。
指示をくれ
とりあえずダウンロードしてくるわ

576:デフォルトの名無しさん
05/11/13 13:35:02
spring-framework-1.2.5-with-dependencies.zipをダウンロードして
Eclipseに展開
その間に
URLリンク(www.atmarkit.co.jp)
これを読んでる

577:デフォルトの名無しさん
05/11/13 13:39:20
なにこれ?
あほですか?
ただ、指定のクラスを生成して、ついでにプロパティも入れるというだけ?
くだらん。
ただのFactoryじゃん。
messageを生成時に注入してHello World!かよ。
おめでてーな。
まあ、記事が馬鹿だということを予想して付属のSampleためしてくるよ。

578:デフォルトの名無しさん
05/11/13 13:43:19
>> Spring Frameworkで理解するDI(1)
(2)は、まだー?


579:デフォルトの名無しさん
05/11/13 13:53:10
>>578
もちろん1,2,3を読んでの感想ね。
いま、ExampleのCountryを読んでるんだけど、
いきなりソースを読んでも意味わからんわ。

それぞれのクラスが他に依存しないってことは
Utilを読むみたいに、いきなり読めるってことかと思ってしまった。

今から/samples/countries/*.txtを読んでデプロイして実行してみる。

580:デフォルトの名無しさん
05/11/13 14:08:34
日本用のpropertiesがないからぬるぽい。
適当になぶる

581:デフォルトの名無しさん
05/11/13 14:59:14
解説しよう
なぶる = 触る

582:デフォルトの名無しさん
05/11/13 16:09:48
解説ありがとう
今から外出しないといけなくなった
とりあえずどんな実装をしていくかという
癖みたいなものはわかった。
出たついでに本屋にでも寄って理論を立ち読みしてくるわ

583:デフォルトの名無しさん
05/11/13 18:13:33
ぬるぽ

584:デフォルトの名無しさん
05/11/13 22:40:28
帰ってきたよ
理論読んでくるの忘れたから、検索するわ
あとで

585:デフォルトの名無しさん
05/11/17 20:48:05
1.2.6記念

586:デフォルトの名無しさん
05/11/28 11:55:56
閑古鳥だな

587:デフォルトの名無しさん
05/11/28 12:00:14
DIは結局流行り物だってこった。

DIスレもSeasarスレも活気ないしな。

588:デフォルトの名無しさん
05/11/28 12:06:55
需要は大いにあるけど、
言語レベルでの制約によるメリットが一部損なうことや、
リファクタリングがかなりし難くなるところがやはり気に食わないな。

589:デフォルトの名無しさん
05/11/28 12:33:48
DIコンテナがなくても
SetterInjectionとFactoryでいいけどさ。
AOPと親和力が高いのが魅力的だよね。
抜け出せない。
遅いのに。

590:デフォルトの名無しさん
05/11/28 13:15:50
つか、もうEJB3でおけ

591:デフォルトの名無しさん
05/11/28 13:18:05
でも「EJB?ハァ?これからはSpringだろ」
てのを受けて試しにSpring触って第一印象が>>577ってパターンが結構多い気がするな。

592:デフォルトの名無しさん
05/11/28 20:17:43
フロントしか弄ってない俺には、Strutsの焼き直し。

593:デフォルトの名無しさん
05/11/28 21:17:10
今って分散環境だとビジネスロジックには
何が一番使われてんの?

594:デフォルトの名無しさん
05/11/28 21:21:10
あ、これじゃいみわかんねえや
モデルだった

595:デフォルトの名無しさん
05/11/28 22:32:06
>>592
Strutsとは全くかぶってないので、StrutsをどうやきなおしてもSpringにならない・・・

596:デフォルトの名無しさん
05/11/28 22:33:25
>>595
フロントコントローラ、まんまStrutsなんだが。

597:デフォルトの名無しさん
05/11/29 00:09:53
これってどこがいいの?
XMLからクラスが生成できるだけ?

598:デフォルトの名無しさん
05/11/29 00:22:41
>>595
次の次ぐらいのStrutsはWebWorkになるそうだぞ。


599:デフォルトの名無しさん
05/11/29 00:25:00
ん?IDEと統合するのを目標に作られたJSFがあるからそれはないべ?

600:デフォルトの名無しさん
05/11/29 00:34:16
>>599
ほれ。
URLリンク(www.mail-archive.com)


601:デフォルトの名無しさん
05/11/29 00:37:30
もうひとつ。
URLリンク(blogs.opensymphony.com)
スレ違い。失礼。


602:デフォルトの名無しさん
05/11/29 00:42:46
>>600-601
えーーーー。
なんかすっげー違和感・・・。

603:デフォルトの名無しさん
05/11/29 12:19:40
>リファクタリングがかなりし難くなる
なるか?
設定ファイル書き直しの手間が云々って意味?

604:デフォルトの名無しさん
05/12/01 20:40:22
SpringFrameworkのDefaultIntroductionAdvisorと
DelegatingIntroductionInterceptor の使い方がやっと分かった。

AOPヽ(´ー`)ノマンセー


605:デフォルトの名無しさん
05/12/06 10:25:25
使う場所を見つけるまでがAOPです

606:デフォルトの名無しさん
05/12/08 08:03:22
AOPとDIと、どっちが偉いの?

607:デフォルトの名無しさん
05/12/08 08:41:40
別々の話だから、比べてもしかたない。

608:デフォルトの名無しさん
05/12/08 09:35:46
どっちも偉くはないですが

609:デフォルトの名無しさん
05/12/10 23:50:35
URLリンク(muimi.com)
SpringのHello Worldでどのサイトをみても
これ以上のことがどこも書いていないのですが
どういった点が優れているのでしょうか?

いまいちこのフレームワークが他よりも優れいているというメリットが見えないのですが
また具体的に何が得意とかあるのでしょうか?


610:デフォルトの名無しさん
05/12/11 01:16:39
他ってなんのことを言ってるの?

611:デフォルトの名無しさん
05/12/11 15:13:00
みなさん実際に実務だとどんなところにSpring使ってます?
全面的に使ってたりする?

612:デフォルトの名無しさん
05/12/11 15:47:19
Springは使うなら全面的だろ。

613:デフォルトの名無しさん
05/12/11 15:49:33
>>612
大根としてつかうだけならどこか1部だけでもOKでは。

614:デフォルトの名無しさん
05/12/11 16:10:46
>>613
たとえばStruts使う場合だと、すべてのActionをSpringに委譲するし。

615:デフォルトの名無しさん
05/12/11 16:14:12
>>614
具象オブジェクトの生成部分を切り出す単位って、そこしかないわけか
オイ?モットどこにでもあるでしょうがよ。

616:デフォルトの名無しさん
05/12/11 16:20:57
???

617:伝説新人タクシ
05/12/11 16:23:20
>>609
疎結合であるとかそれによって単体テストがしやすいとかいうこと?

618:デフォルトの名無しさん
05/12/11 17:11:40
Springわかんなかったんなら、EJB3を待ってたほうがいいかもね。

619:デフォルトの名無しさん
05/12/11 17:54:34
予習でやるならともかく、今の流れだと、これから本格的にSpring使うってのはなしなきがするな。
だから、逆に絶対やっといても損はない気がするけどさ。

620:デフォルトの名無しさん
05/12/12 10:29:59
そんな難しいものじゃないし、画期的な機能に満ち溢れているわけでもないよ。
ただ単に便利なツールでいいのだと思うけど。
便利なBeanFactory、それで充分だよ。

おまけで付いてくる付属品はけっこういいよ。
AOPもそうだし、ORMやらmailやらが楽チンに扱えるのも嬉しい。

S2でもSpringでもどっちでもいいけど、これがない世界には戻りたくないね。

EJB3があれば不要という話もあるね、GabinKingが主張しているように。
でもSpringを通してEJB3を使った方がより簡単、そういう機能が出てくるって予想してる。

621:デフォルトの名無しさん
05/12/12 10:36:16
というか、普通のTomcatで動かせて面倒なパッケージング不要なEJB3、みたいな感じになると思う。

622:デフォルトの名無しさん
05/12/12 10:36:44
追伸:煽るワケじゃないが、Springごときを理解できない方が
EJB3を使いこなせるとは思えない。Annotationの裏で
起こっている出来事を多少は理解している必要はある、って
認識の元の考えだけど。

623:デフォルトの名無しさん
05/12/12 10:58:46
Springってかなり裏方的な働きだから、単体ではよさがわかりにくいんだと思う。
EJB3でも、単にORマッピングだという認識で、なんだか裏側で勝手に結びつけてくれるという感じになるんじゃないかな。

624:デフォルトの名無しさん
05/12/12 16:27:03
EJB3 って来ると思う?
Java ソースにアノテーション埋め込むのと
設定ファイルに外出しされてるのと
どっちが疎結合か考えたら
EJB3 は退化してるとしか思えない。

625:デフォルトの名無しさん
05/12/12 18:56:40
アノテーションで疎結合じゃないという話は、すでに時代遅れだし、EJB3が来ないと思うなら、別の部分で批判しないといけない。

626:デフォルトの名無しさん
05/12/12 19:05:38
簡単に理由をいえば
「疎結合のためにアノテーションを排除して、なんの意味がある?」

627:デフォルトの名無しさん
05/12/12 20:42:36
プゲラ
おまいらどうせ来年にはAnnotationに文句垂れてると思うよ、飽きっぽいから。


628:デフォルトの名無しさん
05/12/12 21:45:25
>>627
いや、それはそれで良いんじゃねぇの?
不満がなければ技術革新なんてねぇさ。

629:デフォルトの名無しさん
05/12/12 21:58:43
Annotationの仕様には不満があるけど、Annotation自体はとても気に入ってるよ。

630:デフォルトの名無しさん
05/12/12 22:25:06
Springで簡単なWebアプリを作るサンプルがあるサイトしらない?
WebApplicationContextを使って云々みたいな。。。

631:デフォルトの名無しさん
05/12/12 22:28:53
Struts使った方が楽だからねぇ・・・

632:デフォルトの名無しさん
05/12/12 22:53:59
AnnotationとEnumの組み合わせが好きだな
XDocletとは違って定数を指定できるし、引数の型チェックも出来る

633:デフォルトの名無しさん
05/12/13 02:02:54
StrutsよりもJSFをもう少し簡単にした物を使いたい

634:デフォルトの名無しさん
05/12/13 09:39:22
>>630
ほらよ

URLリンク(www-06.ibm.com)
URLリンク(www5f.biglobe.ne.jp)
URLリンク(appfuse.dev.java.net)
URLリンク(equinox.dev.java.net)

勧められるのは、ビジネスロジックレイヤ内にサービスレイヤを
作ってるヤツ。(Facadeかけてるやつ)

とりあえずIBMのヤツを熟読しろ。

635:教えてください
05/12/13 21:35:54
左クリックを使用できないようにjavaScriptを組んだつもりでしたが、機能しません。
どこが間違ってるのかご指南ください。

問題のHP URLリンク(urei.ojaru.jp)
フレームを使用してますが 
Images→***のリンク→左使用不可ページ となってます。

*** のページ 左使用不可ページ直リン防止script
左使用不可ページ 左使用不可script

このようにしたのですが・・・・・・・マイリマシタ
もうどうしていいのか分りません

636:デフォルトの名無しさん
05/12/13 22:01:21
>>635 はスレ(板?)違いの上に、マルチ

637:デフォルトの名無しさん
05/12/14 10:05:47
板違いというより、基地外

638:デフォルトの名無しさん
05/12/16 02:08:32
Spring.NETの方はどうですか?
同じ?

639:デフォルトの名無しさん
05/12/16 13:48:47
>>638
Spring.NETは基本的なDI・AOPの機能は既に実装済み。
DB、トランザクション、WEB等の機能はまだ開発中みたいだな。

だけど、正直.NETでDIは使う気にならないな。

640:デフォルトの名無しさん
05/12/17 13:07:47
>>639
何故?


641:デフォルトの名無しさん
05/12/24 12:10:09
ActionSupportを使ってStrutsとSpring連携させてるんだけど
このクラスのテストケースをstrutstestcaseを使って書こうとした時に
Actionから呼び出すBeanを変えてテストケース書きたい場合
Bean定義のXMLを変えるしか方法がない?

テストケース側からビジネスロジックの注入を書けると楽なんだけど、、、


642:デフォルトの名無しさん
05/12/25 01:54:24
自分で注入しちゃったら?

643:デフォルトの名無しさん
05/12/26 01:34:51
Struts + Sringでエ○画像掲示板つくってみました。
Spring入れたほうが動作は安定して早くなりました。

644:デフォルトの名無しさん
05/12/26 11:56:02
>>642

その方法がわからないんだよう
ポインタなぞあったら教えてぎぶみー

645:デフォルトの名無しさん
05/12/28 07:47:52
Spring2.0って機能面ではどう変わったんですか?

646:デフォルトの名無しさん
05/12/28 07:55:33
>>644
セッターインジェクションの場合
setXxx(value);

フィールドインジェクションの場合
xxx = value;

で注入できますw

647:デフォルトの名無しさん
05/12/28 14:12:36
>>645
設定ファイルがXML Schemaベースになってる。

648:デフォルトの名無しさん
05/12/29 12:31:25
Important new features include:

* Simplified, extensible XML configuration
* Powerful new Spring AOP features and AspectJ 5 integration
* Asynchronous JMS facilities enabling message-driven POJOs
* Spring Portlet MVC, a MVC framework for JSR-168 Portlets
* ... and much, much more

これって設定ファイルが結構変わるのかな?
個人的には三番目がようやくと言った感じ。

JmsTemplate はいろいろ思うように行かなくて
(非同期受信なし、リソースを開放するタイミングが制御できないなど)
結局新たに作成したものを使った。
JndiTemplate があればどうにかなった。

649:デフォルトの名無しさん
06/01/08 02:38:17
フレームワークの議論ばかりしていて実際にハイレベルな
パフォーマンス&拡張性が要求される現場では役に立たない
方々乙かれさまです。

650:デフォルトの名無しさん
06/01/08 03:19:20
どこでも役に立たない>>649よりはマシだけどな。

651:デフォルトの名無しさん
06/01/08 03:40:27
>>635>>637>>649

652:デフォルトの名無しさん
06/01/10 15:18:00
普通なら釣りなんだろうが現場見てると
本気でそう考えてるオサーンがたくさん居て死にそうになる。

さすがに起動時だけは遅いが、一度起動してしまえば
速度が気になったことはないな。
拡張性については具体的な例を挙げて欲しいな。
どういう要求が出た時にどういう対応をしたのかを。

653:デフォルトの名無しさん
06/01/11 03:07:47
HibernateDaoSupportを使う場合にQuery#setFirstResults(int)やsetMaxResults(int)を
使うにはどうすればいいかご存じの方はいませんか?
getHibernateTemplate().find* ではQueryオブジェクトを渡せないし。。。
getSession()して自分で処理するしかないかな。
Spring 1.2.6 です。

654:デフォルトの名無しさん
06/01/11 11:24:00
>>653
HibernateCallback

655:653
06/01/11 22:34:55
>>654
return getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
// クエリ投げて結果を返す
}
}
って感じですね。マニュアルにも載ってました。ポイントありがとう。

656:デフォルトの名無しさん
06/01/21 20:54:23
URLリンク(pcweb.mycom.co.jp)
> Drools 2.5 BETA 2において提供されている拡張モジュールはdrools-decisiontables、
> drools-dotnet、drools-examples、drools-groovy、drools-ide、drools-io、drools-java、
> drools-jsr94、drools-python、drools-smf、drools-smftest、drools-spring、
> drools-spring-examples、drools-spring-jdk5。ベースとなる藻ジュースはdrools-base、
> drools-core、drools-core-3.0。

Springにも対応しているらしいルールエンジンだが、なんだかベースが不味そうだ。

657:デフォルトの名無しさん
06/01/21 21:14:58
>>656
「藻ジュース」(・∀・)イイ

658:デフォルトの名無しさん
06/01/22 10:27:33
いや飲みたくはない……

659:デフォルトの名無しさん
06/01/23 21:26:19
今、新しいアプリ作るんで、まあ流行のSpringと扱い慣れているStrutsでと思っています。
まずはアーキテクチャを決めるために、いろいろサンプルを作ってみてるんですが、質問です。

Struts&Springの連携で、代表的なのは
 1) ActionSupport
 2) DelegatingActionProxy
 3) DelegatingRequestProcessor
の3つだと思うのですが、2) or 3) で決めかねています。

1)はせっかくなんでつまらないのでボツ。
残るはDelegatingActionProxyとDelegatingRequestProcessorですが、
機能的にどちらが良いのか分かりません。
どちらかと言えばActionを継承させてBaseActionを使っていたことが多いのですが、
RequestProcessorの方が上位ですよね。

アプリケーションは到って小規模なんでどちらでも同じだと思いもするのですが、
考慮すべき点や拡張性の点等、ご助言・苦言を頂けないでしょうか。

非常に基本的な質問で恐縮ですが、

660:デフォルトの名無しさん
06/01/23 23:34:09
たいくつでつまらない技術が一番強い。

661:659
06/01/24 11:18:42
>>660
確かに、ごもっともだと思います。
実はこれまでの開発ではSpringを使う機会もあったのですが、
見易さ、改修性の高さ、開発規模から
ServiceはInterfaceを使わずに実装しました。
(さすがにDAOはiBatis使って分けましたが)

それに比べ、今回は10年前にCで作った参照のみのアプリの更新で
時間的な余裕もあるので遊びたいと思ってます。

APIも読んでみたのですが、XDOCLETを使うか、また宣言で問題があったら、
といった使い分けの程度しか理解できませんでした。
みなさん、どのような使い方されているのでしょうか、教えて頂けるとありがたいっす。

662:デフォルトの名無しさん
06/01/24 13:57:58
>659
(1) と (3) は Struts に変更があったら、思い切り引きずられそう。
TilesRequestProcessor が出ようが新規に Action が発明されようが
涼しい顔して DelegatingActionProxy でラップするのみの (2) が好きですね。
(ていうか (2) しか使ったことないですけど。)
その分設定ファイルは煩雑になるわけですが。

自分の分かりやすいと思える方法でやるのが一番かと。
小規模でそれほど寿命も長くないのであれば、(1) も手っ取り早くていいと思いますよ。

XDOCLET は思ったほど便利じゃないと言うか、
開発の間に試行錯誤してると、結局手で書いたほうが速かったでした。
↑これは設計がまずかっただけかも知れません。

663:デフォルトの名無しさん
06/01/24 23:17:11
>>662
Actionベースはやはり分かり易いですよね。
人数が多いそれなりの規模なら、間違いなくActionProxyでいくと思います。

いくつかサンプル作ってみたのですが、3種類の感想は

ActionSupport
-確かに楽だけど、Springの楽しさは十分に味わえない気が。
 でも実装はまんまActionなんで、いたって簡単。
 しかもプログラマの質がそれなりなら、自分入れて3人位いれば
 中規模まで行ける気がする。

ActionProxy
-実質これがStruts&Springの標準でしょう。
 至って堅牢なシステムが訳分からん害虫と一緒でもテストファーストで
 スムーズに作れそう。
 しかもこれまでのStrutsの資産も十分に生かせるんじゃないでしょうか。

RequestProcessor
-Controler以前の処理をガチガチにやるのであれば、やはりRequestProcessorだと
 思います。
 が、幾分硬すぎる気が。大人数のRUPには向いているかな。

自分ごときが作るシステムはそれほどクリティカルじゃないし、ユルイと思うのですが、
まあ当たり前、と言った感想でしょうか。

今回はActionProxyからやってみようと思います。
時間もある分、新しい人も多いんで。
また進展したら報告します。 いらんか。

664:デフォルトの名無しさん
06/01/25 12:22:51
>また進展したら報告します。 いらんか。
最近スレが過疎ってるからチラシの裏でも問題ないかと。

>訳分からん害虫
でかいところが素敵なフレームワーク作ってるかと言うと
そんな仕事にありつけたことが一度もないのは運が悪いんだろうか。

665:659
06/01/25 22:18:20
>>664
なかなか難しく厳しい問題です、拡張性・メンテナンス性を含めた機能美で言えば。
確かに誰がやったん?ってひどいのもありますが、現状では仕方ないかとも思っています。

1つはレガシーのためです。
やはり遺物であっても今から見ればあほあほなRDB設計であっても
どうしても引きずらないではいられません。
例えばホストシステムの特定部分をWebに置き換える際、レガシーのデータやインターフェースは
その他のホストのためにつないでやらないといけません。
おかげでせっかくのDAOも、結局は???になってしまいがちです。
これまで私も挑んだのですが砕け散りました。

もう一つは、企業にとってみればシステムが構築されれば後は減価償却の対象でしかありません。
本来3ヶ月かけて作るべきものであっても即興で1.5ヶ月でつくれば評価されてしまいます、
掛けたくないのは人件費な訳ですから。
もちろんこんなシステムの維持のコストは高いです。が、トップの方々には見えてきません。
ユーザーからの機能追加要望があった、といえば、それなりのコストであれば通ってしまいます。
海外拠点との情報連携なんてつけてやれば大喜びです。
(フェーズ毎に見積もりきちんととって開発も難しいのが現状ですから・・・)

と、過疎板でうだつのあがらん社内SEが独り言ってみました。

666:デフォルトの名無しさん
06/01/25 22:53:35
664ですがマ板向きな話題になりそうなのでこの件はクローズ。
脱線させてごめんなさい。

667:デフォルトの名無しさん
06/01/29 00:03:48
すいません、Spring.NETの話題もここで良かったりします?

668:デフォルトの名無しさん
06/01/29 09:45:51
わかんない。
けど、とりあえず書いてみれ

669:デフォルトの名無しさん
06/01/31 10:23:30
>>659

>うだつのあがらん社内SE
お前様はオレですかw

疑問に思ったことを二つ。

>見易さ、改修性の高さ、開発規模から
>ServiceはInterfaceを使わずに実装しました。

何故だよ? facadeした方がP層から見たときに理解しやすいし、
実装ロジックを意識しないで済むと思うのだけど。あと例えば
君がAPI定義して、君の手下が実装する、なんて作業も
スムースになると思うのだけど。

あと、その場所にSpringのTransaction制御は適用してるの?
それとも君達でゴリゴリ書いているの?
そこがSpringの一番美味しい所だと思うのだが。



670:デフォルトの名無しさん
06/01/31 10:24:23
<連投>

>流行のSpringと扱い慣れているStrutsでと思っています。

扱い慣れているとはいえ、何故に死滅が確定している
現verのStruts? 同じ社内SEの立場として言うが、
それって将来に禍根を残すんじゃないの?
特に、struts-taglibを使うのは忌むべきことじゃないのか?

高度にクリティカルじゃなくてもいいなら、素直にJSFを
採用すりゃいいじゃん。もし、strutsじゃなきゃ人材を
確保できねぇと言うなら、せめて
org.springframework.ui.velocityパッケージの研究を
してから決定した方がいいんじゃないの?



671:デフォルトの名無しさん
06/01/31 12:13:28
死滅とかはNG Wordに入れてる人も居るから避けたほうが吉。

JSF はもう少し枯れてからの方が良くない?
今のところ、Velocity でやっちゃうのが一番直感的に思う。

672:デフォルトの名無しさん
06/01/31 12:24:21
うちで使ってるアプリケーションサーバーはJSPしか動かねぇ
Servletすら使えない

673:デフォルトの名無しさん
06/01/31 15:42:57
釣りには屈しない

674:デフォルトの名無しさん
06/02/01 09:47:13
おぉ、まだ居る方が。

>>669
ServiceのInterfaceについては、いかに害虫がオブジェクト指向を知らなくても
オブジェクト指向らしいJavaになるか考えてこうなりました。
まずあの方達はクラスを上手く切り出せないんです、最初は。
で、下手にInterfaceやって使いまわしなんて考えると開発中の手入れが
恐ろしいことになり、ある意味好き勝手にやってもらいました。
で、DAOについてはメソッドが明確なんでInterface切ってやってもらってます。
iBatisを使ってるんですが、こいつだとDAOの中のみでTransaction制御できるんで
助かります。
これだと統合テスト中にこっちでクリティカルな部分がすぐいぢれるんで楽なんですよ。

675:659
06/02/01 10:14:07
書き忘れですが、674 = 659です。

Strutsについては、JSFでの置換えも検討しましたが、
今回、自分以外はJavaでWebやるの初めてなんですよね。
やはりブラウザからRequestをServletで受けて、というのを実感
し易いのはStrutsかなぁ、と思います。
JSF、VBちっくにドラッグ&ドロップでできてしまうんで、最初からこれだと
裏の理解が薄く後々に生きない気がします。
それと社内SE的にはもう少し枯れてからで良いかなと、正直思います。

Taglibについては、個人的にこれ以上覚えられるかー、ということで
beanとlogicにのみ制限しています。
まあ多少beanを拡張はしていますが。。。

個人的には、Struts → JSFで行きたいなと、Viewについては。


676:669
06/02/01 10:53:44
>>659

>DAOの中のみでTransaction制御

これって複雑なことをやろうとすると破綻しないかい?
複数のテーブルを更新するのもDaoのメソッド単位になる、
従って肥大したDaoImplを書かざるを得なくなる、という原因で。

オレのやり方だとこんな感じだ。

<ServiceLayer>
public void deposit(Account account, Money increasedMoney){
  accountDao.update(account);
  revenueDetailDao.insert(account, increasedMoney);
}

で、トランザクションはあくまでserviceLayerに置く。つまり上の
depositメソッドに対してPROPAGATION_REQUIREDを設定する。

オレはさらに、dao層、上の例ではaccountDao.updateと
revenueDetailDao.insertに対しては
PROPAGATION_MANDATORYをかけている。
これによりserviceLayerを通さずにDaoに触ったら即座にアポーン。

君の「DAOの中のみでTransaction制御」だと、上の二つの
メソッドを一つにまとめないと原始性を維持できないのでは?
勘違いだったらスマソ。

677:659
06/02/01 12:13:46
>>669
DAO単位で考えれば原始性を維持できない可能性は仰る通り存在します。
でも、実際の使用で考えれば、多少複雑なデータはユーザに紐付いているわけで、
2重ログインを防げば、問題無しという訳です。
美しくないことは、確かですが。

Springでのトランザクション管理は、まだ読んだだけですけど、実装も含めスマートですね。
トランザクション属性なんか、いかにも楽できそうで。
DAOは何を使われてるんですか?
今回はHibernateが親和性も高く、情報も多いんで使おうかと思ってます。

678:669
06/02/01 13:12:05
う~ん、オレにはそれはチョト怖く感じる。

更新が途中で落ちる可能性なんてゴロゴロしてるワケだし。。。
(オレには納得いかんが)落ちる可能性を完全無視するとしても、
その場合は最低でもペシミスティックロックで組まんとイカンと
思うのだけど。。。

頼む、トランザクション管理層をserviceLayerに持ち上げとくれ。
Spring使えばチョチョイのチョイだ。

iBATISは好きだぉ。


679:デフォルトの名無しさん
06/02/01 16:24:19
>>669
仰ってることが分かってきました。
自分が話しをごっちゃにした予感です、害虫さんと自分の立場を。

害虫さんのトランザクション管理は、はっきり言って、信用してません。
で、問題があった際にDAOとServiceを引っ張って考えるのはしんどいんで
DAOについてはiBatisのAutoCommitにして、自分はServiceに集中できるように
している、という話です。

読み返してみると、確かに訳分からん話してますね、自分。

そういえば、SpringとベストマッチなDAOって何でしょ?
iBatisもいけるようだとネットに載ってた気がしますが、やはりHibernateですかね?
他に面白いのないでしょうか。



680:デフォルトの名無しさん
06/02/01 20:56:14
HibernateはDBを一から設計するっていうならおすすめ
既存のDBがからむならiBatisの方が無難だとおもう

害虫さんがいてiBatis学習コストが気になるっていうなら
Spring JDBCでもいいんじゃない?


681:デフォルトの名無しさん
06/02/02 01:17:25
>>675
>Taglibについては、個人的にこれ以上覚えられるかー、ということで
>beanとlogicにのみ制限しています。

Strutsでやるんなら最低限必要なStrutsタグはhtmlタグのみで、後はJSTLで置き換えるのがお勧め
JSTLはJava EE5に含まれることが決定しているし、JSFも1.2からはJSTLと連携出来るようになる

682:デフォルトの名無しさん
06/02/02 01:36:23
お勧めとかではなく、beanとかlogicを使うべきではない、という感じだな。

683:659
06/02/02 10:15:36
>>680
既存DB、IMSもRDBもわんさかあるんで、これまではiBatisだったんですよね。
オブジェクトベースでのDB考えるなら、Hibernateというイメージは確かに強いですよね。
そんな幸せな開発はやったことありませんが。

>>681、682
z/OS中心の製造業社内SE的には、Webのプレゼンテーション層については過渡期に
感じるので、枯れ果てた技術で十分かなと思います。
新しい技術を入れても今後メンテする人が大変なだけですよ、うちのような環境では。

JDKにしても既存のものは1.4.Xが限度で、5にすることなんてありえません。
ぶっちゃけ、手間の割にメリットがあんまり考えられません。
それよりも新しいWASには5を導入する方向で考えると思います。

個人的にはJSFの熟成を期待しつつ、ちょっと複雑になりそうだったらリッチで、
と行ければ良いなぁ。

・・・今はこんなこと考えている自分が、ちょっと嫌。
Javaを始めて勉強してた頃はオブジェクト指向に感動し、新技術マンセーだったのに。
他に居ないのかな、こんな方。






684:デフォルトの名無しさん
06/02/02 11:17:28
>682
beanを使うべきじゃないとは言っても、
messageはなかなか避けられないような。

685:669
06/02/02 11:31:58
おいおい、そんな後ろ向きになるなよ。

新技術に対する感動を忘れたらオレらの仕事はつまらなく
なるばかりだぜ。つーか、今でもspring・iBATIS・hibernateって
やってるんだろーが。何でviewだけそんなに野望を失うのさ?

struts-taglibは、数年後には非推奨API(あるいはそれに準じた
無体な扱いを受ける立場)になるんだぜ? 君は後進に
非推奨APIのメンテをさせる気かい?

JSF怖くないってw つーかあれ便利だぞ。少なくてもstrutsに
比べりゃね。なんつったて同じ作者の二番煎じなんだから。
JSF自体がDI持ってるからSpringとの組み合わせもし易いしね。
練れてなくて意味無い所で苦労を強いられるのは認めるけど。

な~んて書きながら、オレ自身もJSFマンセーには
なりきれないのだけどね。初期の頃に宣伝されたリッチ
クライアント対応とか全然進んでねぇし。(JDNCは実質
ポシャったみたいね) 早いとこJSPの呪縛から抜け出して
欲しいと思っているのに、なんか全然別の方向に逝こうと
しているみたいだし。。。

愚痴スマソ


686:デフォルトの名無しさん
06/02/02 11:44:00
JSFも悪くないと思うけどね、まだ出来たてのせいか
ちょっとこなれてない感じ。 EL式とかアレだし。
sunのより高機能なんでmyfaces使っても、バグが結構あって
DataTableとか微妙な挙動をする場合がある。

1.2待ちかな

687:デフォルトの名無しさん
06/02/02 13:02:24
>>684
messageは使うね。

>>686
2年もたってるのに、出来立てはないとおもう

688:659
06/02/03 12:37:57
>>669
Viewも野望だけはあるんですけどね。
ただWebだと、JSFにしても色々あり過ぎて、決め手に欠けます。
それにお偉方の説得材料が足りません。
もう暫くおとなしく待って、淘汰されてから選んで良いかな。

Viewはお偉方にも分かってしまうんで、ここ以外は、好き勝手やれるんだけどねぇ。



689:デフォルトの名無しさん
06/02/03 13:49:52
正直jsp2.0で十分な気が

690:デフォルトの名無しさん
06/02/15 15:03:14
Hibernate3初心者ですが、ちょっと教えて下さい。
many-to-one のマップで、もし該当データが存在しなくても怒られない方法、
知りませんか?
例えば

<class name="item">
<id name="id"/>
<many-to-one name="bid"/>
</class>

<class name="bid">
<id name="id"/>
<pro name="amount"/>
</class>

これで
from Item item left join fetch item.bid をやって、
取得したリストを表示させると、bidを取得できなかったitemの
item.bid.amountをgetすると、
LazyInitializ E org.hibernate.LazyInitializationException TRAS0014I: 次の例外がログに記録されました。 org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
と、アボンです。

session閉じて分離オブジェクトになってんだから、良いじゃん、
と思うんだけど、教えて下され。


691:デフォルトの名無しさん
06/02/15 15:11:12
>>690
スレ違い
スレリンク(tech板)


692:690
06/02/15 15:56:38
>691
スマソ

693:デフォルトの名無しさん
06/03/07 11:35:44
保守、というか1.2.7記念。

694:デフォルトの名無しさん
06/03/07 12:03:36
EJB3.0 のどこが DI なのかと思い始める今日この頃。

695:デフォルトの名無しさん
06/03/07 12:49:55
つまり、勉強不足?

696:デフォルトの名無しさん
06/03/07 23:10:38
@EJBアノテーションによるフィールドインジェクションだが?

697:デフォルトの名無しさん
06/03/07 23:40:25
まぁ勉強不足なのは確かだが。

結局クライアントコードに依存性を書いてる辺りが、
確かに従来のJavaの文法じゃないけど
アノテーションと言う名前のただの lookup じゃん、とか。

(DIとは関係ないが)@Statefulも
アノテーションと言う名前の implicit な interface になっただけで
同じことをするのに書法のバリエーションが増えただけで
Perl のガラクタ折衷主義を思い出したり。

698:デフォルトの名無しさん
06/03/08 22:01:48
"アノテーション使ってるからDIじゃない"っていいたいの?

interfaceがメソッドに付けれますか、と。
"ただのlookup"ではないしな。
結局アノテーションどうこうとゴネてるやつって、変化を受け入れれないだけなんだよな。

699:デフォルトの名無しさん
06/03/09 01:38:51
クライアント側でリソース名を明示的に書いているから
DIとはいいがたいと思ってます。

>"ただのlookup"ではないしな。
どんな嬉しさがあるか、教えていただけないでしょうか。
煩雑な記述が減る程度しか思いつきません。

>interfaceがメソッドに付けれますか、と。
@Stateful はメソッドに付かないと思うけど。

700:デフォルトの名無しさん
06/03/09 03:37:13
>>699
> クライアント側でリソース名を明示的に書いているからDIとはいいがたいと思ってます。

つまり、DIをわかってないと。

701:デフォルトの名無しさん
06/03/09 13:01:15
そっか。DIの定義が変わったのか。

702:デフォルトの名無しさん
06/03/09 22:20:05
>>701
変ってないだろ。
君が勘違いしてるだけ。

703:デフォルトの名無しさん
06/03/11 15:16:19
2.0になってどう?
近い将来でseasar使うか2.0使うか迷ってるんだが、
Spring側の利点が見つからない・・・

両方つかってみたけど、seasarだとXMLをかなり省けるから
楽なんだが・・・

誰か意見ください。

704:デフォルトの名無しさん
06/03/13 13:14:45
>702
DIって、クライアント側で明示的にリソース指定した部分が
コンテナが注入するようになって素敵だよって流れだと思ってたんですが。
で、勘違いのない本当の定義とは?

>703
利点が見つからないならSeaser2使えば良いかと。
とりあえずXMLが省けることは多分大した利点にならんよ。

705:デフォルトの名無しさん
06/03/13 21:56:40
横槍スマソ

>>704
そもそもEJB3のDIは「明示的にリソース指定」はしないぞ

>とりあえずXMLが省けることは多分大した利点にならんよ。
その根拠は?
書かなくて済むのであれば書かないに越したことは無いし
XMLのメンテナンスだって馬鹿にならない

706:デフォルトの名無しさん
06/03/13 23:15:36
>>704
DIの最低限の定義は、自分でインスタンスをとって来ないで、よそから注入してもらうこと。

@EJBアノテーションつけたとしても、それなりのコンテナ使わない限りなにも影響はない。
そのままSpringやSeasar使えばそれなりに注入される。

707:デフォルトの名無しさん
06/03/14 10:32:53
DIに関して705氏と706氏の意見で納得。
確かに自分でインスタンスとってきてるわけではないね。
俺はとってくる情報が書かれてることそのものが嫌いなんですが
これはDIとは関係ないってことですね。

>その根拠は?
autowire 使えばそれなりに記述量は減るけれども
曖昧さが増えてかえって混乱を招くだけだった、との経験から。
Seasar2だと違うのかも知れない。
適当なこと言ってごめんなさい。

それにしても盛り上がらないスレですね。なんでだろ。

708:デフォルトの名無しさん
06/03/14 18:46:23
一部雑誌や新しいもの好きが飛びついてるだけで
現場ではほとんど使われてないから。

709:デフォルトの名無しさん
06/03/14 19:36:29
はい、飛びつきました

710:デフォルトの名無しさん
06/03/14 22:14:33
うちでは全部SpringかSeasar使ってるが、世間ではそうなのか?
トランザクションに関してはとても楽だが

711:デフォルトの名無しさん
06/03/15 17:34:47
>>707
いったん使い出せば、通常の範囲では質問もなにもないし、特に話題がないからかもね。

712:デフォルトの名無しさん
06/03/15 17:52:50
イイナー
うちで使ってるスゲー高いアプリケーションサーバーは
jspしか使えない

713:デフォルトの名無しさん
06/03/15 21:47:24
そりゃないんじゃね~の?

714:デフォルトの名無しさん
06/03/15 22:14:35
>>712
BroadVision One-To-One
以前はC++しか使えなかった。マジで。

715:デフォルトの名無しさん
06/03/15 22:14:55
713宛てだった

716:デフォルトの名無しさん
06/03/15 22:30:54
「Portal,Commerceの価格は1CPUで810万円からとなっております。」
ΣΣ(゚д゚lll)

717:デフォルトの名無しさん
06/03/16 00:03:31
そういやあ、WebObjectsも昔は750万とかしたよなあ。。。。

718:デフォルトの名無しさん
06/03/16 00:05:24
製品カタログ見ても何をするものなのかが分からん。

719:デフォルトの名無しさん
06/03/16 02:13:23
JSPしか動かないTomcatみたいなの
ショボいDBのラッパーとかユーザー管理とかビジネスルールのライブラリとかがいっぱい付いてる
あと やたら高い

720:デフォルトの名無しさん
06/03/16 03:57:55
うちの会社で出してるゴミコンポーネントも945万円するお。
1年で1個売れれば万々歳だって。

721:デフォルトの名無しさん
06/03/17 16:09:08
そりゃむしろ、945万もするから売れるんだろう。
金を出す人間は、無料でしっかりしたモノを嫌がって
バカ高くてヘボいモノを好む傾向にあるから。

で、現場は地獄を見る、と。

722:デフォルトの名無しさん
06/03/17 17:20:41
無料だとちょっと問題が出るとすぐ捨てるけど、
金かけてると捨てるわけにはいかないからなあ

723:http://www.vector.co.jp/soft/win95/util/se072729.html
06/03/18 20:26:19
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

724:デフォルトの名無しさん
06/03/25 12:11:47
なあ、参照しかしないクエリーでもトランザクション切ってる
なんて事ないよな?
サービスのインスタンス化時にトランザクション切るのをデフォルト
にしてるのを見たことあるぞ。。。
同時アクセス数増えたとき、大変な事になるのがわからんのじゃろうか。


725:デフォルトの名無しさん
06/03/27 10:58:31
AOPでトランザクション管理するなら、
READだけの処理では普通は開かんようにするはず。

726:デフォルトの名無しさん
06/03/27 14:11:08
>AOPでトランザクション管理するなら
してなかったりして

727:デフォルトの名無しさん
06/03/27 16:22:43
貼っとく

【BEA】Using the Java Persistence API with Spring 2.0
URLリンク(dev2dev.bea.com)

728:デフォルトの名無しさん
06/03/27 19:02:56
>>724
どうして大変な事になるの?

729:デフォルトの名無しさん
06/03/28 09:58:12
複数のテーブルを参照してひとつのデータを作るような場合は、
読み込みでもトランザクションきらないとまずいんじゃないの?


730:デフォルトの名無しさん
06/03/28 10:11:35
>>729
> 複数のテーブルを参照してひとつのデータを作るような場合は、
JOINではなくて、複数のSELECT発行って事?

731:デフォルトの名無しさん
06/03/28 11:05:09
>>730
ISOLATION_LEVELのデフォルトって普通はREAD_COMMITTEDじゃないの?
複数のSELECTまで考えるとISOLATION_LEVELをREPEATABLE_READに変更しないと駄目じゃない?


732:デフォルトの名無しさん
06/03/28 11:33:17
>>731
InnoDBのデフォルトはREPEATABLE_READみたいだなあ

733:730
06/03/28 11:45:37
>>731
>>732
DBベンダによってデフォルトが異なる。んで、大抵はREPEATABLE_READ(らしい)。

結論としては、複数のSELECTを発行するサービスのメソッドは
トランザクション制御しなきゃならんって事か。

734:731
06/03/28 11:59:04
>>732
Oracleのデフォルトは文レベルの読み取り一貫性(READ_COMMITTED)だったような...

>>733
>結論としては、複数のSELECTを発行するサービスのメソッドは
>トランザクション制御しなきゃならんって事か。

加えて以下の様に明示的にISOLATIONレベルを指定しないといけないのかな?
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED, ISOLATION_REPEATABLE_READ, readOnly</prop>
</props>
</property>

735:733(=730)
06/03/28 12:24:32
>>734
いささか古いが、
URLリンク(www.tomlauren.com)
によると、OracleのデフォルトはREAD_COMMITTEDみたいだ。
でも、REPEATABLE_READがNotSupportって事になると、
SERIALIZABLEしかないな。

最新の公式資料キボン。

736:731
06/03/28 14:16:43
>>735
Oracleで以下の操作をやると
conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

java.sql.SQLException:
READ_COMMITTEDおよびSERIALIZABLEのみが有効なトランザクション・レベルです。
...
ってエラーが出るよ。

Oracleだと更新処理を伴うトランザクションでトランザクションレベルの読み取り一貫性を
保証したいのであればSERIALIZABLEを指定するしかないのでは?
※更新処理を伴わないのであればreadOnlyだけで大丈夫みたい

でも実際にSERIALIZABLEがどうしても必要になる局面があんまり無いような気も...

で、元の話は

>>724
> なあ、参照しかしないクエリーでもトランザクション切ってる
> なんて事ないよな?

ってことだけどこれって

読み取り一貫性を保証しなくて良い参照のみのトランザクションでAOPで管理せず、AutoCommitも無効にしている場合、
明示的にトランザクションを開始する必要があるのか?

という意味なのかな?


737:デフォルトの名無しさん
06/03/28 16:19:46
Strutsを使った場合の、AOPによる宣言的トランザクション管理について意見を聞かせてください。

(前提)
・サービスクラスの各メソッドはAOPによって宣言的トランザクション管理されている。
(処理)
・リクエスト->更新Action->表示Action->JSPとディスパッチする。
・更新Actionと表示ActionはサービスクラスのupdateHoge()やfindHoge()を呼び出す。

これだと、1回のリクエスト中に2つのActionが2回ビジネスロジックを実行するから、
トランザクションも2回発生してしまいますよね?(1操作=2トランザクション)

何となく腑に落ちませんが、これが当たり前なんでしょうか?

それとも、Facadeサービスから更新も検索もまとめて呼ぶべきでしょうか?
更新と検索の引数リストが全く異なる場合はFacadeしたくないんですが…

738:デフォルトの名無しさん
06/03/28 20:03:23
好きにしろとしか……
個人的には、更新作業の頻度次第で決める

739:デフォルトの名無しさん
06/03/29 11:26:28
本家よりコピペ

Spring 2.0 Release Party in Stuttgart (organized by JUGS)
Submitted by Juergen Hoeller on Fri, 2006-02-24 18:31. Event
Start: 2006-03-30 14:00
End: 2006-03-30 23:00
Timezone: -14400

いよいよ2.0が間もなく到来だぬ。

ところで2.0の目玉って何なのさ?(恥)

740:デフォルトの名無しさん
06/03/29 16:35:27
>>738
んじゃ、Action2つにする。

とりあえず、HibernateでOpenSessionInViewしておけばAction2つでも
1トランザクションになるよね?

741:デフォルトの名無しさん
06/03/31 23:11:17
>>740
トランザクションとHibernateのセッションの区別はついてますか?


742:デフォルトの名無しさん
06/03/32 00:26:43
これ、掻い摘んでいうと何?

743:デフォルトの名無しさん
06/03/32 01:38:39
軽量コンテナ

744:デフォルトの名無しさん
06/03/32 05:59:35
>>742
「Java2EEなんかクソくらえ」

745:デフォルトの名無しさん
06/03/32 06:03:37
今日は32日だ。うそをついていい日ではない。

746:デフォルトの名無しさん
06/03/32 10:39:20
URLリンク(www.2ch.net)
*エイプリルフール中止のお知らせ*
本年度、ITバブル崩壊の余波、またライブドア事件の混迷、楽天ゴールデンイーグルスぶっちぎり最下位など、
悪条件の重なりによる株価低迷が2ちゃんねる運営費にも多大なる影響を与え、
火の車である今の財務状況を鑑みるに、エイプリルフールの全面中止もやむなしという判断にあいなりました。
ご期待されていた皆様には大変申し訳ありませんが、どうぞよろしくご理解いただければ幸いです。
また、妄言民族と呼ばれ、近隣アジア諸国に多大なる苦痛を与えている日本国民としてこれを良い機会と考え、
例えエイプリルフールだとしても嘘を無くし、世界平和に貢献できる公明正大な言論の場を標榜すべく襟を正しつつ、
2ちゃんねるはエイプリルフールの根絶に今後とも邁進していく所存でございます。


747:724
06/04/02 12:30:05
>読み取り一貫性を保証しなくて良い参照のみのトランザクションでAOPで管理せず、
>AutoCommitも無効にしている場合、明示的にトランザクションを開始する必要があるのか?
そうじゃ。RDBにもよるが、読み取り一貫性を実現するために、大体がテンポラリ領域に
データをコピーしている(OracleとSQL Serverは少なくともそう)。
この事から、一覧など頻繁に閲覧されてデータ量が多い場合、直ぐエラーになっちまう。
(同時アクセスが多いと、Tempがクリアされる前に次が来ちゃうからじゃ)
このエラーを受けてDB屋にTemp領域増やせっていうのはナンセンス。
もちろん、ビジネスロジック上大きなTempが必要な場合もあるからそれは、
ちゃんと見積もりをDB屋に伝えればいい。大きくするのに否定的な訳じゃなく
PGの手抜きに対して文句を言ってるんじゃ。

また、上記の事だけじゃないが、上記だけからでも結構コスト(負荷)
が掛かることは言うまでもないよな。

748:デフォルトの名無しさん
06/04/02 13:10:03
>>747
> そうじゃ。RDBにもよるが、読み取り一貫性を実現するために、大体がテンポラリ領域に
> データをコピーしている(OracleとSQL Serverは少なくともそう)。

オラクルは違うだろ。
データがコピーされるのは読み取り時じゃなくて更新時。
コピー先はテンポラリじゃなくてUNDO表領域。

> この事から、一覧など頻繁に閲覧されてデータ量が多い場合、直ぐエラーになっちまう。

頻繁に閲覧されてもそれだけじゃエラーにならない。
頻繁に更新されている時にのんびり読んでるとORA-01555
本当に理解して書いてるか?

749:デフォルトの名無しさん
06/04/02 15:04:58
> > この事から、一覧など頻繁に閲覧されてデータ量が多い場合、直ぐエラーになっちまう。
>
> 頻繁に閲覧されてもそれだけじゃエラーにならない。
> 頻繁に更新されている時にのんびり読んでるとORA-01555
> 本当に理解して書いてるか?

激しく同意。
付け加えるなら、Oracleではトランザクションの有無にかかわらず
文レベルの一貫性は常に保証しようとするから、
> 頻繁に更新されている時にのんびり読んでるとORA-01555
という状況はトランザクションの有無にかかわらず起こりうる。

だから、>747の主張は少なくともOracleには当てはまらない。

750:740
06/04/02 18:58:45
>>741
スマソ&サンクス
考えてみれば、サービス層でAOPトランザクション管理していると、
複数Actionが複数サービス呼び出す時点で複数トランザクションになる…
んでOpenSesseionInViewしてもHibernateのSessionが1つに保たれるだけですな。

結論すると、2Actionだと2トランザクションでいくしかないのか。

751:731
06/04/03 14:34:04
あんまりSpringと関係が無くなって来たような気が...

>>747
>>748
>>749
読み取り一貫性に関しての詳細は置いておいて元の話だとOracleでは
以下になるんじゃないかな?

必要な読み取り一貫性が文をまたがるのであれば読み取り専用の
トランザクションを明示的に開始する必要がある。

必要な読み取り一貫性が文レベルでよいのであれば明示的にトランザクションを
開始しなくても良い(コネクションを生成した際のトランザクションがずっと使われている)
但し、更新処理の前にはCommitを発行して明示的にトランザクションを開始する必要がある

どちらにしてもOracleで更新やロックを伴わないトランザクションでCommitを行っても
無視される(v$sesstatのuser_commitは増えない)のでパフォーマンスには大した影響を与えない

結局のところ空コミット(参照のみトランザクションでのコミット)のコストの話なのかな?


752:740
06/04/07 20:14:03
今さらだが、ようやくStruts+Spring+Hibernate
(DelegatingActionProxy、
StandardXAPoolDataSource、
JOTM、
OpenSessionInViewFilter、
JtaTransactionManager)
のアプリが作れたよ…

さて、次はSeasarも試してみるか…

753:デフォルトの名無しさん
06/04/07 23:51:41
Hibernateって使える?

754:デフォルトの名無しさん
06/04/08 06:37:50
Java標準になったくらい使える。

755:デフォルトの名無しさん
06/04/08 13:40:24
DB設計がしっかりしているならHibernate
DB設計が腐っているならiBATIS
どっちも便利であるのは間違いない。
適材適所で。

756:デフォルトの名無しさん
06/04/27 06:56:47
spring 使いたい。しかしEJBコンテナを捨てるには問題が。
リモート呼び出しやORM(hibernateで)は置き換えることが
できたけど、EJBのMessage Driven Beanを代替するものが
見つからない。MDB便利すぎる。

757:デフォルトの名無しさん
06/04/28 01:17:20
Struts+Springで
SpringのViewクラスを使用したい場合は
どうすれば良い?


758:デフォルトの名無しさん
06/04/28 21:03:44
それってStruts使う意味あんの?

759:デフォルトの名無しさん
06/04/29 20:34:44
>>757
既存システムとしてStrutsの部品があって
ExcelとかPDFを出力したいので
SpringのViewを使用する

760:デフォルトの名無しさん
06/04/29 20:36:33
つ POI

761:デフォルトの名無しさん
06/05/08 16:21:07
Struts(SpringのStrutsインテグレーション機能)とSpringMVCって同時に動作できないの?
web.xmlとXXX-servlet.xmlを調整すれば、実現できそうだけど?

762:デフォルトの名無しさん
06/05/09 09:52:00
1.2.8記念

って何なのこれ?

763:デフォルトの名無しさん
06/05/10 18:31:22
1.2.8 についてか、Spring についてか。>何なの

764:デフォルトの名無しさん
06/05/11 00:10:50
クラス属性に対応するbean定義の<property name>の値って、何でもいいんだな。
setterの名前さえ整合性が取れていれば。

765:デフォルトの名無しさん
06/05/19 09:53:31
貼っとく

Rodが語った2.0@JavaOne

URLリンク(www28.cplan.com)

user:contentbuilder
pass:doc789


766:デフォルトの名無しさん
06/05/19 14:31:03
>765
thx.

Message-Driven POJO なんて構想もあったのか。初めて知った。

Extensible XML Confinguration は
俺様設定が乱立しそうでちと怖いな。

767:デフォルトの名無しさん
06/05/19 14:32:45
>>761
そりゃできるだろ。


768:デフォルトの名無しさん
06/05/19 16:50:26
では757は解決だな

769:デフォルトの名無しさん
06/05/20 00:21:20
ソースコード上でAppicationContextを利用してBeanを取得するしかない
場合、どうしてます?
いい方法を考えているうちにgetBean("BeanId")のコードがいっぱいできた
まんまプロジェクト終盤にきてしまった。。。

770:デフォルトの名無しさん
06/05/20 00:56:56
そんなに気にしなくていいと思うけど、
getBeanId()のメソッドを用意して静的にアクセスできるようにはしてる。


771:デフォルトの名無しさん
06/05/20 00:59:34
もちろんID取得もSpringで管理するんだよな?


772:デフォルトの名無しさん
06/05/20 01:01:22
そもそも、自分でgetBeanしなくていいように作ります。
StrutsならDelegatingActionProxy使えばいいし
TapestryもSpringと連携させてコンポーネントにInjectしてもらえるし。

773:デフォルトの名無しさん
06/05/20 06:12:45
それができない場合はルックアップするしかない。
どこからでもルックアップできてしまうので収集がつかなくなるおそれはあるけど、
>>770 のように bean の種類ごとにルックアップするメソッドを用意しておけば
いく分見通しもよくなると思われ。

774:デフォルトの名無しさん
06/05/20 08:56:55
それただのサービスロケータになってる
別にいいけど

775:デフォルトの名無しさん
06/05/20 12:58:25
サービスロケータだと何がダメなの?

776:デフォルトの名無しさん
06/05/20 13:05:37
DI自体がサービスロケータ

777:デフォルトの名無しさん
06/05/20 15:56:24
>>775
サービスロケータに依存してしまうからですよ。

778:デフォルトの名無しさん
06/05/20 15:59:55
ただ、サービスロケータはコンパイルエラーでミスを検地できるので
単純にどっちが上とかはいえない

ってDIってネーミングつけた人いってなかったっけ?

779:775
06/05/20 16:13:32
>>777
なるほどー。ありがとうございます。
となるとそれくらいの依存は気にならないなー。
元レスは注入できない場合の話だし

780:769
06/05/20 16:55:15
かといって他の解決方法もないのですよね。たぶん。
ドメインモデルとは相性が悪いのでしょうか。やはり。
いまさら設計をトランザクションスクリプトにできないし。。。
まっ宣言的トランザクションだけでもかなり有効であることには
変わりないわけだし。

781:デフォルトの名無しさん
06/05/20 22:52:38
>ソースコード上でAppicationContextを利用してBeanを取得するしかない
場合

ってどういう場合なんだろう?
素朴な疑問。

782:デフォルトの名無しさん
06/05/21 03:47:30
私が使っているフレームワークにはイベントリスナを登録しておくと
コールバックしてくれるという機能があるけど
イベントリスナには依存性注入のチャンスがないのでApplicationContextを使う。

783:デフォルトの名無しさん
06/05/21 07:33:25
>>782
ここで解説されているみたいなことをやるべし
URLリンク(www-128.ibm.com)


784:782
06/05/22 00:01:56
>>783
自分でインスタンスを生成する必要がある場合の話です。



785:769
06/05/22 15:49:50
getBeanを利用する主な場面とは。。。
たとえば親子関係をなすドメイン(請求書と請求明細)などは
ロジック上で画面の内容をドメインに変換する必要があるのですが
明細クラスのような1クラスで複数インスタンス必要になる場合は
betBeanで必要数分インスタンスを生成する必要がある。
みたいな場面です。

786:デフォルトの名無しさん
06/05/22 16:54:00
>>785
内部でインスタンスを生成する必要があるロジックの場合は、
そのインスタンスを生成するFactoryクラスをインジェクトする
ってのをよくやる。

787:デフォルトの名無しさん
06/05/23 22:20:49
てかドメインモデルとはめちゃ相性悪い。
アナパタ時代の設計にDI使おうとすると死ねる

788:デフォルトの名無しさん
06/05/24 11:41:00
よくわからんが、
higaタソが提唱しているシンドメインモデルならドメインロジックだけDIにして、ドメインモデル(データ)
だけ通常の手段(new)で生成すればよいのでは?
URLリンク(d.hatena.ne.jp)

789:デフォルトの名無しさん
06/05/24 13:07:20
▽どっちが速いSeasar2 VS Spring
URLリンク(cm.thinkit.co.jp)

790:デフォルトの名無しさん
06/05/24 14:00:57
>>788
オレもそうしてる。ドメインのPOJOは自分でnewする方がOOしてる気分になるね。
DIに生成させるのはServiceLayer~DataStoreLayerのドメイン『操作』クラス達だぬ。

>>789
キャハキャハ。なんかヒガタソ最近人格が変わった? JavaOneでイジメでもくらったのかな。

PowerdBySpringのフレームワークがこんなにポコポコ誕生している現状を見れば、
1.2.xとスピード競争やった所で焼け石に水ダヌ。
AspectJが推奨スタイルになる2.0のこと知らぬ訳ではないだろうにね。

別にRodファンではないけどさ。

791:デフォルトの名無しさん
06/05/24 15:39:44
785が考えるケースで getBean() することはない。
データは普通に new したらいい。
なんで getBean() しようとしたのか教えてくれ。
メリットが何一つ思い浮かばない。

792:788
06/05/24 17:02:50
>データは普通に new したらいい。
激しく同意。

ビジネスロジック周りでDIしたいと思うなら、
ドメインビジネスとしてクラスを切り分ければいいのでは?と思った次第。

793:769
06/05/24 22:06:40
>シンドメインモデル

>ドメインビジネスとしてクラスを切り分ければ。。。

ということは、私の思うトランザクションスクリプト + DAOという
組み合わせがDIでは有効という考えと同意と考えられます。
そちらのほうが合っているという結論ですよね。結局は。
DIを利用する上では状態をもつドメインはミスマッチであるということですね。


794:769
06/05/24 22:24:03
>なんで getBean() しようとしたのか教えてくれ。
>メリットが何一つ思い浮かばない。

785であげた例も悪かったですが。。。
1.getBeanするドメインが他のドメインを持っている。
オブジェクトグラフの一気取りが可能(Factory作ればすむという話もあるが)
2.やはりInterfaceを実装する実クラスをコードに書かなくてよい
この2つはかなりのメリットです。

もちろん前提がドメインロジックとデータの分離であれば、データに対して
getBeanするメリットが何もないというのは理解できますが。

DIを利用する上では状態をもつドメインはミスマッチである
けれども
上記の理由があるためドメインモデルでもDIを採用しました。
けれども
getBeanする部分をもっといいやり方はないですかねーという質問でした。

795:デフォルトの名無しさん
06/05/25 01:09:09
Hibernate等のORマッパでドメインモデルを取得すれば、
one-to-manyなんかの関係は勝手に構築してくれる。
1の芋づる式にとりたいというだけでgetBeanするのはDIの役割とは違う希ガス。
(もしかして、DAOが生成するデータが≠ドメインモデルな設計?)

>2.やはりInterfaceを実装する実クラスをコードに書かなくてよい
はちょっと意味が理解できん。スマソ。解説キボン。

>DIを利用する上では状態をもつドメインはミスマッチである

>上記の理由があるためドメインモデルでもDIを採用しました。
は納得できないなぁ。
そう考えた理由は?

あと、ビジネスロジックを切り出しただけでトランザクションスクリプトって呼ぶの?
SQLで記述するのか、呼び出し側の言語で記述するのか、が
ドメインモデルとトランザクションスクリプトの最大の相違だと思ってた。
URLリンク(capsctrl.que.jp)

796:デフォルトの名無しさん
06/05/25 01:14:00
うーん、ドメインモデルとかDIとかいろいろいじった結果一時DIに傾倒したが....

結局ところ、ドメインモデルのサポートとしてDIを使うくらいにしておきたいと
思った。
もしどうしてもどっちかを取らなくちゃいけなくなったら、サービス層を内製しても
ステートフルなドメインモデルを選択したい。Hibernateとか使うと、リッチなJava
オブジェクトをそのままDBにマッピングできたりするし。

それに、そっちのほうがオブジェクト指向っぽい感じがするから。

797:デフォルトの名無しさん
06/05/25 15:57:44
精読したが
> 上記の理由があるためドメインモデルでもDIを採用しました。
の結論に至った理由が理解できなかった。

実際何を getBean() したのかが分からない。
getBean(リテラル文字) まくりな状況より
new した方が可読性高いし変なキャストもせずに済む。
設定ファイルで singleton="false" を書き忘れる心配もない。
どうしても生成部分を隠したいなら、
簡単な Factory を作って、そいつを DI でセットしたらいい。

798:デフォルトの名無しさん
06/06/29 07:36:24
RC2あげ

799:デフォルトの名無しさん
06/07/04 09:35:38
過疎スレ保全

つか、2.0期待sage

800:デフォルトの名無しさん
06/07/04 20:58:53
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i-want-to-study-java@hotmail.co.jp
(アドレスは全角で書いてあるので半角に直してください)

801:デフォルトの名無しさん
06/07/05 03:49:26
コンビニのバイトより安いですが、よろしくお願いします。

802:デフォルトの名無しさん
06/07/05 16:53:11
おひおひ、1,000\/h っていくら何でも安すぎだよ。
それじゃ労働しようとする意欲湧かねぇな。

君が♀なら別。

803:デフォルトの名無しさん
06/07/05 17:12:10
javaを教えると一言に言っても色々あるしな

804:デフォルトの名無しさん
06/07/05 19:13:48
Springと関係ないな

805:デフォルトの名無しさん
06/07/05 19:33:12
>>804
つーかスレタイにJavaが含まれているスレに無差別絨毯爆撃しているだけだから無視するのがよろしいかと

806:デフォルトの名無しさん
06/07/05 22:35:28
しかし以外にたくさんあるんだな。
>つーかスレタイにJavaが含まれているスレ
ブックマークしていながら、今回のマルチが出るまで気づかなかった。

807:デフォルトの名無しさん
06/07/07 15:39:40
Spring WS のドキュメントが結構揃ってきたすね。
前は XML-Object Mapping の章しかなかったのに。
そろそろまじめに調べ始めるかな。

808:800
06/07/17 21:33:22
教える対象は超初心者です。

専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です

809:デフォルトの名無しさん
06/07/18 12:06:26
javaの前に常識って物を勉強したほうが良いと思います^^;

810:800
06/07/18 12:49:11
常識も教えていただければと思います。

811:デフォルトの名無しさん
06/07/18 14:19:48
ここで聞いても学べません

812:デフォルトの名無しさん
06/07/20 22:25:56
もはや完全にSeasarに押されてるな。

813:デフォルトの名無しさん
06/07/21 00:57:25
>>812
獄長乙

814:デフォルトの名無しさん
06/07/21 23:57:04
WebMVCのSimpleFormControllerで、
フォームのパラメータ名とCommandのフィールド名を
任意にマッピング(バインド)する方法がわからない…

815:デフォルトの名無しさん
06/07/24 17:54:58
spring:bind使ってないの?

816:デフォルトの名無しさん
06/07/26 12:31:58
Java World 2006/09 特集

2.0 とか関係なしに
・EJB3.0 に懐疑的
・ORM は最終的に JDBC に回帰する
な姿勢が良かった。

あと Acegi の記事が後で役に立ちそう。

817:デフォルトの名無しさん
06/08/01 13:18:00
漏れJavaWorld斜め読みした所。詳しくはこれから読む。

豆蔵が書いたのねコレ。漏れは以前、長谷川ダンナの話を
聞いたことがあるのだが、

「Hibernateは確かに優れたプロダクトだが万能じゃない。
 陥りやすい穴もあるから慎重に検討してから導入した方がいい。」

って言ってた。禿同だったんだけどね。今回の記事もその思想が
根底に流れているみたいだね。

JPAマンセーな流れの中でこういう視点は貴重だと思う。

818:デフォルトの名無しさん
06/08/09 01:22:18
Servlet依存のコード(JSFバッキングBeanも含む)とサービスメソッド
のデータ受け渡しってPOJOでもDTO使った方がいいのかな?
直にビジネスオブジェクト受け取った方がコーディングが楽なんだが・・・

819:デフォルトの名無しさん
06/08/10 09:35:55
>>818

URLリンク(www.atmarkit.co.jp)
から抜粋

このように、POJOをそのままEntity Beanとして扱うことができれば、従来のEJB開発で
Web層とのデータ交換に利用されてきたDTO(Data Transfer Object)パターンはもはや
不要となる(実のところ、J2EEパターンの多くはEJBの使いにくさを緩和するために
生み出されたアンチパターンであるという見方もある)。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch