<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Hibernate Sessions in Fat Client Anwendungen</title>
	<atom:link href="http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/</link>
	<description>Softwaredevelopment, Projectmanagement, Qualitymanagement and all things &#34;schauderhaft&#34;</description>
	<lastBuildDate>Tue, 07 Feb 2012 23:24:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Jens Schauder</title>
		<link>http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/comment-page-1/#comment-188</link>
		<dc:creator>Jens Schauder</dc:creator>
		<pubDate>Mon, 11 May 2009 13:28:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/#comment-188</guid>
		<description>Hallo Michael,
ich bin leider noch nicht dazu gekommen mich ernsthaft mit Spring zu beschäftigen.</description>
		<content:encoded><![CDATA[<p>Hallo Michael,<br />
ich bin leider noch nicht dazu gekommen mich ernsthaft mit Spring zu beschäftigen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Grünewald</title>
		<link>http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/comment-page-1/#comment-187</link>
		<dc:creator>Michael Grünewald</dc:creator>
		<pubDate>Mon, 11 May 2009 13:22:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/#comment-187</guid>
		<description>Hallo Jens,

was hat Dein Spring-Ansatz gebracht?

Viele Grüße Michae</description>
		<content:encoded><![CDATA[<p>Hallo Jens,</p>
<p>was hat Dein Spring-Ansatz gebracht?</p>
<p>Viele Grüße Michae</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Niels Hoffmann</title>
		<link>http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/comment-page-1/#comment-146</link>
		<dc:creator>Niels Hoffmann</dc:creator>
		<pubDate>Thu, 05 Mar 2009 12:59:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/#comment-146</guid>
		<description>Hallo Jens,

vielen Dank für die ausführliche Antwort und schön zu hören, dass der Ansatz im Grunde funktionoiert. 

Viele Grüße
Niels Hoffmann</description>
		<content:encoded><![CDATA[<p>Hallo Jens,</p>
<p>vielen Dank für die ausführliche Antwort und schön zu hören, dass der Ansatz im Grunde funktionoiert. </p>
<p>Viele Grüße<br />
Niels Hoffmann</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jens Schauder</title>
		<link>http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/comment-page-1/#comment-144</link>
		<dc:creator>Jens Schauder</dc:creator>
		<pubDate>Wed, 04 Mar 2009 17:10:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/#comment-144</guid>
		<description>Hi Niels, 
der Weg führt zum Ziel, Steine zum stolpern gibt es allerdings jede Menge.

- Die Lösung ist durchaus komplex. Es gab bei uns immer wieder Situationen, in denen jemand auf die falsche Session zugegriffen hat und dadurch Probleme verursacht wurden. Mögliche Abhilfe könnte hier ein DI Framework (hat jemand Spring gesagt?) schaffen, dass immer die Richtige Session injiziert. Da muss ich aber selbst erst noch schlau machen, ob es das hält, was ich mir davon verspreche.
- Caching ist ein echter Schwachpunkt jeder 2 Schichtarchitektur. Jede Form des cachens beim Client kann zu veralteten Daten führen -&gt; Optimistic locking exceptions


Wenn man Probleme vermeiden will ist as Wichtigste, dass die Entwickler, oder zumindest ein wesentlicher Anteil, Hibernate wirklich verstanden haben. Und damit meine ich nicht, dass sie alle möglichen Mappings beherrschen, sondern das klar ist, wann man aus welchem Grund, update, load, get, flush oder commit aufruft und welche Auswirkungen das hat.

Und man sollte sich der Alternativen bewusst sein:
- Ein Webapp ähnlicher Ansatz, bei dem mit detachten Objekten gearbeitet wird. Sessions würden dabei immer nur kurz geöffnet, die Daten gelesen und/oder geschrieben und dann die Session wieder geschlossen werden. Vorteil: einfacher, vermutlich skalierbarer. Nachteil: kein Lazy Loading, was wiederum dazu führt, dass die Datenzugriffsschicht genau wissen muss was die GUI braucht. Also muss die GUI so schlau werden, dass sie dass der Datenzugriffsschicht sagen kann, was sie braucht, oder die Datenzugriffsschicht braucht implizites Wissen über die GUI.
- 3 Schichtarchitektur. Vor und Nachteile wie oben, dazu kommt: Vorteil einfacher Umbau zur Webapp, besser cache Möglichkeit. Nachteil: komplexer in der Entwicklung und beim debuggen.</description>
		<content:encoded><![CDATA[<p>Hi Niels,<br />
der Weg führt zum Ziel, Steine zum stolpern gibt es allerdings jede Menge.</p>
<p>- Die Lösung ist durchaus komplex. Es gab bei uns immer wieder Situationen, in denen jemand auf die falsche Session zugegriffen hat und dadurch Probleme verursacht wurden. Mögliche Abhilfe könnte hier ein DI Framework (hat jemand Spring gesagt?) schaffen, dass immer die Richtige Session injiziert. Da muss ich aber selbst erst noch schlau machen, ob es das hält, was ich mir davon verspreche.<br />
- Caching ist ein echter Schwachpunkt jeder 2 Schichtarchitektur. Jede Form des cachens beim Client kann zu veralteten Daten führen -> Optimistic locking exceptions</p>
<p>Wenn man Probleme vermeiden will ist as Wichtigste, dass die Entwickler, oder zumindest ein wesentlicher Anteil, Hibernate wirklich verstanden haben. Und damit meine ich nicht, dass sie alle möglichen Mappings beherrschen, sondern das klar ist, wann man aus welchem Grund, update, load, get, flush oder commit aufruft und welche Auswirkungen das hat.</p>
<p>Und man sollte sich der Alternativen bewusst sein:<br />
- Ein Webapp ähnlicher Ansatz, bei dem mit detachten Objekten gearbeitet wird. Sessions würden dabei immer nur kurz geöffnet, die Daten gelesen und/oder geschrieben und dann die Session wieder geschlossen werden. Vorteil: einfacher, vermutlich skalierbarer. Nachteil: kein Lazy Loading, was wiederum dazu führt, dass die Datenzugriffsschicht genau wissen muss was die GUI braucht. Also muss die GUI so schlau werden, dass sie dass der Datenzugriffsschicht sagen kann, was sie braucht, oder die Datenzugriffsschicht braucht implizites Wissen über die GUI.<br />
- 3 Schichtarchitektur. Vor und Nachteile wie oben, dazu kommt: Vorteil einfacher Umbau zur Webapp, besser cache Möglichkeit. Nachteil: komplexer in der Entwicklung und beim debuggen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Niels Hoffmann</title>
		<link>http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/comment-page-1/#comment-143</link>
		<dc:creator>Niels Hoffmann</dc:creator>
		<pubDate>Wed, 04 Mar 2009 13:22:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/#comment-143</guid>
		<description>Hallom

auch wenn dieser Beitrag schon ein bisschen älter ist, scheint das Thema an sich nicht alt zu werden.
Wir beschäftigen uns gerade mit der selben Fragestellung. Rein intuitiv und nach allem was ich bis jetzt zu Hibernate gelesen habe würde ich den selben Ansatz verfolgen den Du in Deiner Antwort präsentierst.

Da der Artikel ja schon ein bisschen älter ist, hoffe ich das Du jetzt um einige Erfahrungen reicher bist, was die Thematik angeht. Mich würde vor allem interessieren, ob der Weg zum Ziel führt und über welche Steine man dabei stolpern kann.

Viele Grüße
Niels Hoffmann</description>
		<content:encoded><![CDATA[<p>Hallom</p>
<p>auch wenn dieser Beitrag schon ein bisschen älter ist, scheint das Thema an sich nicht alt zu werden.<br />
Wir beschäftigen uns gerade mit der selben Fragestellung. Rein intuitiv und nach allem was ich bis jetzt zu Hibernate gelesen habe würde ich den selben Ansatz verfolgen den Du in Deiner Antwort präsentierst.</p>
<p>Da der Artikel ja schon ein bisschen älter ist, hoffe ich das Du jetzt um einige Erfahrungen reicher bist, was die Thematik angeht. Mich würde vor allem interessieren, ob der Weg zum Ziel führt und über welche Steine man dabei stolpern kann.</p>
<p>Viele Grüße<br />
Niels Hoffmann</p>
]]></content:encoded>
	</item>
</channel>
</rss>

