<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>symolon's blog</title>
	<atom:link href="http://symolon.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://symolon.eu</link>
	<description></description>
	<lastBuildDate>Mon, 28 Jun 2010 21:46:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DTO</title>
		<link>http://symolon.eu/2010/06/28/dto/</link>
		<comments>http://symolon.eu/2010/06/28/dto/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 21:45:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[DTO]]></category>

		<guid isPermaLink="false">http://symolon.eu/?p=59</guid>
		<description><![CDATA[DTO (Data Transfer Object) jest wzorcem projektowym służącym do przesyłania danych między aplikacjami bądź warstwami w jednej aplikacji.
Przeanalizujmy sobie następujący przykład:
Nasza aplikacja zbudowana jest w oparciu o popularny wzorzec MVC. W modelu, warstwa DAO tworzy nam proste obiekty POJO, którymi zarządza np. Hibernate. Naszym zadaniem jest przekazać wartości tych obiektów do widoku. Jednak z pewnych [...]]]></description>
			<content:encoded><![CDATA[<p>DTO (<strong>Data Transfer Object</strong>) jest wzorcem projektowym służącym do przesyłania danych między aplikacjami bądź warstwami w jednej aplikacji.<br />
Przeanalizujmy sobie następujący przykład:<br />
Nasza aplikacja zbudowana jest w oparciu o popularny wzorzec MVC. W modelu, warstwa DAO tworzy nam proste obiekty <strong>POJO</strong>, którymi zarządza np. Hibernate. Naszym zadaniem jest przekazać wartości tych obiektów do widoku. Jednak z pewnych względów nie mamy ochoty przesyłać tam obiektów trwałych.<br />
Z drugiej strony mamy formularz, którego pola utworzą nam kilka obiektów trwałych. W tym przypadku z pomocą przychodzi nam wzorzec DTO.<br />
W skrócie polega ona na utworzeniu prostej klasy, która będzie zawierała wymagane przez nas pola (czy to te z formularza, czy te które chcemy wyświetlić na stronie). Następnie w kontrolerze, przy użyciu napisanego przez nas konwertera, zamieniamy daną klasę DTO na odpowiedni obiekt trwały lub w przeciwną stronę.</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">class</span> UserDTO <span style="color: #009900;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> id<span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> name<span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> age<span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> getId<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">return</span> id<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setId<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">id</span> <span style="color: #339933;">=</span> id<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
...<br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Powyższy kod ukazuje nam fragment prostej klasy DTO, która zostanie utworzona z pól formularza. Zauważmy, że wszystkie pola są typu String, który możemy przekonwertować na odpowiednie typy podczas zamiany obiektu tej klasy na obiekt (bądź obiekty) trwały.<br />
Jest to najprostsze zastosowanie, jednak stosowane bardzo często w rozbudowanych aplikacjach.</p>
]]></content:encoded>
			<wfw:commentRss>http://symolon.eu/2010/06/28/dto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wzorzec projektowy MVC (Model-View-Controller) cz.1</title>
		<link>http://symolon.eu/2010/02/28/wzorzec-projektowy-mvc-model-view-controller-cz-1/</link>
		<comments>http://symolon.eu/2010/02/28/wzorzec-projektowy-mvc-model-view-controller-cz-1/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 10:09:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Studia]]></category>

		<guid isPermaLink="false">http://symolon.eu/?p=11</guid>
		<description><![CDATA[Jak zapowiedziałem, będę powoli umieszczał materiały z moich wykładów. Na pierwszy ogień pójdzie wzorzec projektowy MVC. W pierwszej części przedstawię jego teoretyczną budowę. Praktyczne wykorzystanie w Spring MVC ukaże się już wkrótce (przynajmniej mam taką nadzieje). Jeśli ktoś ma ochotę może również obejrzeć prezentacje, którą udostępniam tutaj.

Jest to jeden z najbardziej popularnych wzorców wykorzystywanych przy [...]]]></description>
			<content:encoded><![CDATA[<p><em><span>Jak zapowiedziałem, będę powoli umieszczał materiały z moich wykładów. Na pierwszy ogień pójdzie wzorzec projektowy MVC. W pierwszej części przedstawię jego teoretyczną budowę. Praktyczne wykorzystanie w Spring MVC ukaże się już wkrótce (przynajmniej mam taką nadzieje). Jeśli ktoś ma ochotę może również obejrzeć prezentacje, którą udostępniam <a href="http://symolon.eu/wp-content/uploads/2010/02/MVC.pdf">tutaj</a>.</span></em><br />
<span id="more-11"></span><br />
<span>Jest to jeden z najbardziej popularnych wzorców wykorzystywanych przy projektowaniu zarówno aplikacji desktopowych jak i webowych. Historia jego powstania sięga lat 70. XX wieku. Opracowany w laboratoriach firmy Xerox zyskał na popularności wraz z szybkim rozwojem inżynierii oprogramowania. </span></p>
<p><span>W jego skład wchodzą 3 komponenty: Model, Widok, Kontroler, które zaprezentuje na podstawie Spring MVC Framework w części 2. Obecnie wystarczy nam ogólna znajomość poszczególnych elementów.<br />
</span></p>
<ul>
<li><span><strong>Model</strong> &#8211;  element odpowiedzialny za logikę biznesową, czyli w najprostszym przypadku określa sposób przechowywania i dostępu do danych</span></li>
<li><span><strong>Widok</strong> &#8211; na podstawie modelu tworzy jego graficzną reprezentacje, która zostaje przedstawiona użytkownikowi. Istnieje możliwość by wiele widoków dotyczyło tego samego modelu.</span></li>
<li><span><strong>Kontroler</strong> &#8211; odbiera żądania, przetwarza je wykonując odpowiednie operacje tworząc lub uaktualniając model </span></li>
</ul>
<p>Oczywiście musimy zdawać sobie sprawę, że klasyczna interpretacja tego wzorca jest nieco inna niż jego odpowiednik sieciowy.</p>
<p style="text-align: center;"><a title="Klasyczny wzorzec MVC" rel="lytebox" href="http://symolon.eu/wp-content/uploads/2010/02/mvc-classic.png"><br />
<img style="border: none;" src="http://symolon.eu/wp-content/uploads/2010/02/mvc-classic-thumb.png" alt="MVC" /></p>
<p></a></p>
<p>Tradycyjna implementacja wzorca MVC:</p>
<ul>
<li>Kontroler  wykonuje żądania i aktualizuje model</li>
<li>Zmiany zostają przekazane do widoku, który samoczynnie się uaktualni (np. korzystając z wzorca obserwator)</li>
</ul>
<p><span>Ze względu na ograniczenia HTTP stworzenie takiej idealnej implementacji w aplikacjach sieciowych jest trudne. Musimy zatem stworzyć rozwiązanie, w którym to nie model przesyła dane do widoku ale widok pobiera dane z modelu i wyświetla je w odpowiedni sposób po stronie użytkownika.</span></p>
<p><span>Zastanówmy się jak przebiega proces wyświetlenia strony www w przeglądarce internetowej. Przeglądarka generuje żądanie, aby przekazać na serwer informacje o czynności wykonanej przez użytkownika. Serwer reaguje wykonując pewne informacje, po czym generuje widok który wysyłany jest jako odpowiedź do klienta.</span></p>
<p style="text-align: center;"><a title="Webowy wzorzec MVC" rel="lytebox" href="http://symolon.eu/wp-content/uploads/2010/02/mvc-network.png"><br />
<img style="border: none;" src="http://symolon.eu/wp-content/uploads/2010/02/mvc-network-thumb.png" alt="MVC" /></p>
<p></a></p>
<p><span>Wzorzec MVC rozpoczyna działanie w chwili, gdy serwer odbiera żądanie HTTP. Na podstawie informacji w nim przekazanych (URL, parametry), aplikacja powinna wykonać odpowiednie działania (kontroler). Po zakończeniu przetwarzania żądania użytkownika, co zazwyczaj będzie wiązało się z aktualizacją bądź utworzeniem modelu, sterowanie zostaje przekazane do widoku. Z kolei widok przesyła dane do klienta w formie strony HTML bądź innym ustalonym.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://symolon.eu/2010/02/28/wzorzec-projektowy-mvc-model-view-controller-cz-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Koniec semestru</title>
		<link>http://symolon.eu/2010/02/01/koniec-semestru/</link>
		<comments>http://symolon.eu/2010/02/01/koniec-semestru/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 10:55:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ogólne]]></category>

		<guid isPermaLink="false">http://symolon.eu/?p=8</guid>
		<description><![CDATA[I w końcu nadszedł upragniony koniec&#8230; 
Mam teraz kilka dni wolnego czasu, więc sukcesywnie wrzucę na stronę materiały z zajęć i wykładów, które miałem przyjemność w tym semestrze poprowadzić. Mam nadzieje, że komuś do czegoś się przydadzą.
Ufam również, że znajdę chwilkę by doprowadzić stronkę do jako takiego porządku.
]]></description>
			<content:encoded><![CDATA[<p><em>I w końcu nadszedł upragniony koniec&#8230; </em></p>
<p>Mam teraz kilka dni wolnego czasu, więc sukcesywnie wrzucę na stronę materiały z zajęć i wykładów, które miałem przyjemność w tym semestrze poprowadzić. Mam nadzieje, że komuś do czegoś się przydadzą.</p>
<p>Ufam również, że znajdę chwilkę by doprowadzić stronkę do jako takiego porządku.</p>
]]></content:encoded>
			<wfw:commentRss>http://symolon.eu/2010/02/01/koniec-semestru/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Witaj świecie!</title>
		<link>http://symolon.eu/2009/09/28/witaj-swiecie/</link>
		<comments>http://symolon.eu/2009/09/28/witaj-swiecie/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:58:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ogólne]]></category>

		<guid isPermaLink="false">http://symolon.eu/?p=1</guid>
		<description><![CDATA[Witajcie
Z dniem dzisiejszym uruchamiam mojego własnego bloga  
Mam nadzieje, że o ile czas pozwoli, podejmę na nim kilka ciekawych tematów.
]]></description>
			<content:encoded><![CDATA[<p>Witajcie</p>
<p>Z dniem dzisiejszym uruchamiam mojego własnego bloga <img src='http://symolon.eu/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Mam nadzieje, że o ile czas pozwoli, podejmę na nim kilka ciekawych tematów.</p>
]]></content:encoded>
			<wfw:commentRss>http://symolon.eu/2009/09/28/witaj-swiecie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
