<?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>fboiton&#039;s blog &#187; orm mappings</title>
	<atom:link href="http://www.fboiton.com/tag/orm-mappings/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fboiton.com</link>
	<description>Blog Técnico y personal: Ideas, Guias, Tutoriales, Comentarios, Pensamientos, Entre otros.</description>
	<lastBuildDate>Sun, 05 Feb 2012 22:01:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Fluent NHibernate : Component() y ComponentMap</title>
		<link>http://www.fboiton.com/fluent-nhibernate-component-y-componentmap</link>
		<comments>http://www.fboiton.com/fluent-nhibernate-component-y-componentmap#comments</comments>
		<pubDate>Mon, 05 Jul 2010 20:47:39 +0000</pubDate>
		<dc:creator>fboiton</dc:creator>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[fluent nhibernate]]></category>
		<category><![CDATA[nhibernate]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[orm mappings]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.fboiton.com/?p=35</guid>
		<description><![CDATA[Pensemos que ya hemos interactuado aunque sea un poco con Fluent Nhibernate Al momento de realizar nuestros mapeos podemos manejar la composición simple manteniendo en una sola tabla las clasesque se relacionan En este caso “PreInitSearchContext” esta compuesto por un &#8230; <a href="http://www.fboiton.com/fluent-nhibernate-component-y-componentmap">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pensemos que ya hemos interactuado aunque sea un poco con <a href="http://fluentnhibernate.org/" target="_blank">Fluent Nhibernate</a></p>
<p>Al momento de realizar nuestros mapeos podemos manejar la composición simple manteniendo en una sola tabla las clasesque se relacionan</p>
<p><a href="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Figura 1: Clases para Ejemplo Nhibernate con 2 clases utilizando Component()" border="0" alt="Figura 1: Clases para Ejemplo Nhibernate con 2 clases utilizando Component()" src="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_thumb.png" width="368" height="87" /></a> </p>
<p>En este caso “PreInitSearchContext” esta compuesto por un “ContextCreator”.</p>
<p>Traduciendo esto a un Mapeo con FluentNhibernate utilizando <a href="http://wiki.fluentnhibernate.org/Fluent_mapping#Components" target="_blank">“Component()”</a> tendríamos algo así:</p>
<p><a href="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Figura 2: Codigo Ejemplo Nhibernate con 2 clases utilizando Component()" border="0" alt="Figura 2: Codigo Ejemplo Nhibernate con 2 clases utilizando Component()" src="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_thumb_3.png" width="584" height="195" /></a> </p>
<p>Y con esto estaríamos Manteniendo en la misma tabla “pre_init_search_context” ambas clases. </p>
<p>Ahora bien, resulta que existe otra clase que tambien tiene una relación de composición con “ContextCreator”, asi:</p>
<p><a href="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Figura 3: Clases para Ejemplo Nhibernate con 3 clases utilizando ComponentMap&lt;T&gt;" border="0" alt="Figura 3: Clases para Ejemplo Nhibernate con 3 clases utilizando ComponentMap&lt;T&gt;" src="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_thumb_4.png" width="543" height="195" /></a> </p>
<p>Imagino que pensaron en “reutilizar” el código del método Component que tenemos en la clase anterior… y aunque es una opción, estamos generando código repetido y obviamente cayendo en conflictos existenciales relacionados con mantenibilidad.</p>
<p>Es aquí donde “<a href="http://wiki.fluentnhibernate.org/Fluent_mapping#ComponentMap.3CT.3E" target="_blank">ComponentMap&lt;T&gt;</a>” entra en juego, permitiendonos reutilizar el mapeo, en este caso del “ContextCreator”, entre las clases que sean necesarias <img src='http://www.fboiton.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Queda entonces nuestro mapeo asi:</p>
<p><a href="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Figura 4: Codigo Ejemplo Nhibernate con 3 clases utilizando ComponentMap&lt;T&gt;" border="0" alt="Figura 4: Codigo Ejemplo Nhibernate con 3 clases utilizando ComponentMap&lt;T&gt;" src="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_thumb_5.png" width="605" height="122" /></a> </p>
<p>dejando en cada una de las clases solamente:</p>
<p><a href="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Figura 5: Codigo Ejemplo Nhibernate con 3 clases utilizando ComponentMap&lt;T&gt;" border="0" alt="Figura 5: Codigo Ejemplo Nhibernate con 3 clases utilizando ComponentMap&lt;T&gt;" src="http://www.fboiton.com/images/FluentNHibernateComponentyComponentMapT_963E/image_thumb_6.png" width="218" height="27" /></a> </p>
<p>De esta forma las clases “PreInitSearchContext” y “SearchContext” con sus respectivos mapeos independientes pueden reutilizar el mapeo de “ContextCreator” el cual se traducirá a un par de campos (segun la clase utilizada en el ejemplo) en cada una de las tablas correspondientes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fboiton.com/fluent-nhibernate-component-y-componentmap/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

