<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: PofEAA 8th</title>
	<atom:link href="http://www.csus4.net/d/2005/12/06/pofeaa8th/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.csus4.net/d/2005/12/06/pofeaa8th/</link>
	<description>about Enterprise IT, Oracle Database, Jazz/Fusion Music, etc...</description>
	<pubDate>Tue, 06 Jan 2009 10:31:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>By: WR</title>
		<link>http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-82</link>
		<dc:creator>WR</dc:creator>
		<pubDate>Wed, 07 Dec 2005 01:39:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-82</guid>
		<description>&lt;p&gt;&#62; まさゆきさん
Hibernateはまったく使ったことはないのですが、さらりと読んでみました。
12.1.4. Common issuesによると、Hibernate Sessionはスレッドセーフでないので、HTTP Sessionに入れちゃアカン！っていってますね。Webobjectsの場合、フレームワーク側がデフォルトのO-R MapperのSessionに対するスレッド同期をとってくれるので、このような心配はないのですけど。 session-per-application-transactionの実現方法が気になるので、Hibernateのマニュアルをもうすこし読んでみます。&lt;/p&gt;

&lt;p&gt;&#62; 中村さん
なるほどー。他のすべてのTM対応RMがprepareに応じ終わったタイミング（というか順序）で、すなわち、すべてのTM対応RMがcommit/abortの両方が実行可能なタイミングで、TM未対応なRMに対する処理を開始できるのがポイントなんですねー。&lt;/p&gt;

&lt;p&gt;なんか、予定あわせのときに、あとでキャンセルね！といっても怒らなそうな人から予定の確認をとっていくのに似てますね（笑）。&lt;/p&gt;

&lt;p&gt;ご丁寧なアドバイス、ありがとうございました。&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;SeasarのJTA実装における非XAなDataSourceの扱いと同じことなのに、何で気づかなかったんだろう・・・と自己嫌悪。(http://www.csus4.net/d/2005/05/15/j2eestudy/#more-156)&lt;/p&gt;

&lt;p&gt;&#62; koichikさん
&#62; 結局ややこしい状況を作ってませんか
たしかに、データをオンメモリ上に期間長めにもつと、データベース上のデータとズレがでやすくなるため、そのような悩みは発生しますね。
ユーザーから見た一貫性を重視するか（反面、楽観的同時実行制御でNGとなる危険性も！）、適宜データベースからのデータを読み込んで、データベースの最新データをユーザーに見せること（表現イマイチ）を重視するかについて、「もうちょっと具体的な事例」にもとづいて、どちらがよいか判断する必要がありそうですね。&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>&gt; まさゆきさん
Hibernateはまったく使ったことはないのですが、さらりと読んでみました。
12.1.4. Common issuesによると、Hibernate Sessionはスレッドセーフでないので、HTTP Sessionに入れちゃアカン！っていってますね。Webobjectsの場合、フレームワーク側がデフォルトのO-R MapperのSessionに対するスレッド同期をとってくれるので、このような心配はないのですけど。 session-per-application-transactionの実現方法が気になるので、Hibernateのマニュアルをもうすこし読んでみます。</p>

<p>&gt; 中村さん
なるほどー。他のすべてのTM対応RMがprepareに応じ終わったタイミング（というか順序）で、すなわち、すべてのTM対応RMがcommit/abortの両方が実行可能なタイミングで、TM未対応なRMに対する処理を開始できるのがポイントなんですねー。</p>

<p>なんか、予定あわせのときに、あとでキャンセルね！といっても怒らなそうな人から予定の確認をとっていくのに似てますね（笑）。</p>

<p>ご丁寧なアドバイス、ありがとうございました。</p>

<hr />

<p>SeasarのJTA実装における非XAなDataSourceの扱いと同じことなのに、何で気づかなかったんだろう・・・と自己嫌悪。(http://www.csus4.net/d/2005/05/15/j2eestudy/#more-156)</p>

<p>&gt; koichikさん
&gt; 結局ややこしい状況を作ってませんか
たしかに、データをオンメモリ上に期間長めにもつと、データベース上のデータとズレがでやすくなるため、そのような悩みは発生しますね。
ユーザーから見た一貫性を重視するか（反面、楽観的同時実行制御でNGとなる危険性も！）、適宜データベースからのデータを読み込んで、データベースの最新データをユーザーに見せること（表現イマイチ）を重視するかについて、「もうちょっと具体的な事例」にもとづいて、どちらがよいか判断する必要がありそうですね。</p>]]></content:encoded>
	</item>
	<item>
		<title>By: koichik</title>
		<link>http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-81</link>
		<dc:creator>koichik</dc:creator>
		<pubDate>Tue, 06 Dec 2005 17:35:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-81</guid>
		<description>&lt;p&gt;こっちでも獄長獄長言われとる．．．&lt;/p&gt;

&lt;p&gt;&#62; いちいちdetachしてattachするのが面倒に思えるので。&lt;/p&gt;

&lt;p&gt;1 HTTP Session = 1 Unit of Work なら面倒じゃないとも思えないけれど．
実際に更新するオブジェクトはバージョニングでチェックされるけど，更新しないオブジェクトはチェックされないじゃないですか．でもでも，更新内容がそういうのに依存する場合はそれらが最新じゃないとまずかったりして，そうすると Hibernate なら lock(Object) とかで再読込しなきゃいけないケースが多々あったりして，結局ややこしい状況を作ってませんかという気のせいが．
要するに，あるトランザクションがそれ以前のトランザクションに依存することになりやすくて，それをちゃんとコントロールする方がよっぽど面倒でリスクが高いと感じてしまうのです．
なので，自分的には 1 Request = 1 Session の方がシンプルな感じがしますね．&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>こっちでも獄長獄長言われとる．．．</p>

<p>&gt; いちいちdetachしてattachするのが面倒に思えるので。</p>

<p>1 HTTP Session = 1 Unit of Work なら面倒じゃないとも思えないけれど．
実際に更新するオブジェクトはバージョニングでチェックされるけど，更新しないオブジェクトはチェックされないじゃないですか．でもでも，更新内容がそういうのに依存する場合はそれらが最新じゃないとまずかったりして，そうすると Hibernate なら lock(Object) とかで再読込しなきゃいけないケースが多々あったりして，結局ややこしい状況を作ってませんかという気のせいが．
要するに，あるトランザクションがそれ以前のトランザクションに依存することになりやすくて，それをちゃんとコントロールする方がよっぽど面倒でリスクが高いと感じてしまうのです．
なので，自分的には 1 Request = 1 Session の方がシンプルな感じがしますね．</p>]]></content:encoded>
	</item>
	<item>
		<title>By: 中村</title>
		<link>http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-80</link>
		<dc:creator>中村</dc:creator>
		<pubDate>Tue, 06 Dec 2005 02:26:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-80</guid>
		<description>&lt;p&gt;声小さくてほんとすいません(汗&lt;/p&gt;

&lt;p&gt;RMの実行順序の件ですが、
例えば、TM対応のRMが２つ(RMa､ RMb)、TM未対応のRMが１つ(RMc)あって、この３つをトランザクションに入れたい場合、実行順番として、RMcを最後に実行すれば、なんとかなるって話ですね。
RMcが失敗した際に RMa、RMbはロールバックができるので。
これをRMｃ→RMb→RMaという順番でやると、
RMcが成功してRMbも成功してRMaが失敗なんかしたりすると、RMcはロールバックできないのでトランザクションにならなくなる。
またTM未対応のRMが２つ以上あるとお手上げだよね、という話をしてました。&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>声小さくてほんとすいません(汗</p>

<p>RMの実行順序の件ですが、
例えば、TM対応のRMが２つ(RMa､ RMb)、TM未対応のRMが１つ(RMc)あって、この３つをトランザクションに入れたい場合、実行順番として、RMcを最後に実行すれば、なんとかなるって話ですね。
RMcが失敗した際に RMa、RMbはロールバックができるので。
これをRMｃ→RMb→RMaという順番でやると、
RMcが成功してRMbも成功してRMaが失敗なんかしたりすると、RMcはロールバックできないのでトランザクションにならなくなる。
またTM未対応のRMが２つ以上あるとお手上げだよね、という話をしてました。</p>]]></content:encoded>
	</item>
	<item>
		<title>By: たかはしまさゆき</title>
		<link>http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-79</link>
		<dc:creator>たかはしまさゆき</dc:creator>
		<pubDate>Mon, 05 Dec 2005 18:04:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.csus4.net/d/2005/12/06/pofeaa8th/#comment-79</guid>
		<description>&lt;p&gt;EOF/WebObjectsの資料、あとで必ず読みます。ありがとうございます。&lt;/p&gt;

&lt;p&gt;1 Request = 1 Sessionの話ですが、&lt;/p&gt;

&lt;p&gt;http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#transactions-basics-uow&lt;/p&gt;

&lt;p&gt;に記述されています。ただ、「The most common pattern」なので、必ずしも1 Request = 1 Sessionである必要はないのだと思います。また、次回にでも獄長さんに聞いてみます。&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>EOF/WebObjectsの資料、あとで必ず読みます。ありがとうございます。</p>

<p>1 Request = 1 Sessionの話ですが、</p>

<p><a href="http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#transactions-basics-uow" rel="nofollow">http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#transactions-basics-uow</a></p>

<p>に記述されています。ただ、「The most common pattern」なので、必ずしも1 Request = 1 Sessionである必要はないのだと思います。また、次回にでも獄長さんに聞いてみます。</p>]]></content:encoded>
	</item>
</channel>
</rss>
