<?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: Como gerenciar a dependência entre entidades e repositórios?</title>
	<atom:link href="http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/</link>
	<description>Pensamentos sobre desenvolvimento de software</description>
	<lastBuildDate>Mon, 17 Oct 2011 17:39:09 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Leonardo Tadei</title>
		<link>http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/#comment-428</link>
		<dc:creator>Leonardo Tadei</dc:creator>
		<pubDate>Tue, 11 Jan 2011 01:35:55 +0000</pubDate>
		<guid isPermaLink="false">/post/2009/09/26/Como-gerenciar-a-dependencia-entre-entidades-e-repositorios.aspx#comment-428</guid>
		<description>Acabo de tener este problema con nuestra nueva arquitectura y la solución la implementamos en la capa de control, con la forma de una validación de dependencias.
Los objetos involucrados tienen una agregación, y por tanto el ORM permite borrar al objeto agregado y generar una inconsistencia al volverlo a hidratar (si hubiera sido una composición, el ORM hubiera borrado a ambos objetos en cascada.
De esta forma el código de las clases queda limpio y no hace referencia al repositorio (que usa persistencia no invasiva y por alcance) y el validador genera una excepción en el control si la operación es inválida.
Ejemplo:
$totalObjRelacionados = ObjetosRelacionados(&amp;$p, $o, $clase, $att);
if($totalObjRelacionados != 0) {
	throw new Exception(&quot;El Grupo &quot;{$_POST[&#039;des&#039;]}&quot; est&#225; siendo usado por $totalObjRelacionados SubGrupos.&quot;);	
}
en dónde $p es la instancia del ORM, $o es el objeto que se quiere manipular, $clase es la clase que usa al objeto y $att es el atributo que lo representa en la clase.

La sugerencia VI es tener clases encargadas de controlar las dependencias para el sistema, y mantener las clases del negocio lo más limpias posibles, permitiendo que otros sistemas las usen con otras reglas de dependencia en el futuro.</description>
		<content:encoded><![CDATA[<p>Acabo de tener este problema con nuestra nueva arquitectura y la solución la implementamos en la capa de control, con la forma de una validación de dependencias.<br />
Los objetos involucrados tienen una agregación, y por tanto el ORM permite borrar al objeto agregado y generar una inconsistencia al volverlo a hidratar (si hubiera sido una composición, el ORM hubiera borrado a ambos objetos en cascada.<br />
De esta forma el código de las clases queda limpio y no hace referencia al repositorio (que usa persistencia no invasiva y por alcance) y el validador genera una excepción en el control si la operación es inválida.<br />
Ejemplo:<br />
$totalObjRelacionados = ObjetosRelacionados(&amp;$p, $o, $clase, $att);<br />
if($totalObjRelacionados != 0) {<br />
	throw new Exception(&#8220;El Grupo &quot;{$_POST['des']}&quot; est&aacute; siendo usado por $totalObjRelacionados SubGrupos.&#8221;);<br />
}<br />
en dónde $p es la instancia del ORM, $o es el objeto que se quiere manipular, $clase es la clase que usa al objeto y $att es el atributo que lo representa en la clase.</p>
<p>La sugerencia VI es tener clases encargadas de controlar las dependencias para el sistema, y mantener las clases del negocio lo más limpias posibles, permitiendo que otros sistemas las usen con otras reglas de dependencia en el futuro.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Henrique Lima</title>
		<link>http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/#comment-92</link>
		<dc:creator>Henrique Lima</dc:creator>
		<pubDate>Mon, 05 Apr 2010 03:25:21 +0000</pubDate>
		<guid isPermaLink="false">/post/2009/09/26/Como-gerenciar-a-dependencia-entre-entidades-e-repositorios.aspx#comment-92</guid>
		<description>Primeiramente, ótimo POST!

De todas as soluções propostas a que eu mais gostei foi a sugestão 5 (através de AOP). Creio que seja uma maneira bem desacoplada de resolver este problema. Uma solução bem bacana é a proposta pelo Spring Roo, mas aproveitei a curiosidade dos amigos e o seu post para implementar uma solução com Spring que torna o uso bastante trivial.

A descrição da solução está em http://submundojava.com.br/wordpress/2010/04/04/injetando-repositorios-em-entidades-com-spring/

Parabéns pelo blog.

Continue contribuindo que estaremos sempre lendo.

Abraços.</description>
		<content:encoded><![CDATA[<p>Primeiramente, ótimo POST!</p>
<p>De todas as soluções propostas a que eu mais gostei foi a sugestão 5 (através de AOP). Creio que seja uma maneira bem desacoplada de resolver este problema. Uma solução bem bacana é a proposta pelo Spring Roo, mas aproveitei a curiosidade dos amigos e o seu post para implementar uma solução com Spring que torna o uso bastante trivial.</p>
<p>A descrição da solução está em <a href="http://submundojava.com.br/wordpress/2010/04/04/injetando-repositorios-em-entidades-com-spring/" rel="nofollow">http://submundojava.com.br/wordpress/2010/04/04/injetando-repositorios-em-entidades-com-spring/</a></p>
<p>Parabéns pelo blog.</p>
<p>Continue contribuindo que estaremos sempre lendo.</p>
<p>Abraços.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adolfo Sousa</title>
		<link>http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/#comment-87</link>
		<dc:creator>Adolfo Sousa</dc:creator>
		<pubDate>Mon, 05 Oct 2009 21:27:39 +0000</pubDate>
		<guid isPermaLink="false">/post/2009/09/26/Como-gerenciar-a-dependencia-entre-entidades-e-repositorios.aspx#comment-87</guid>
		<description>Eu, de forma geral, prefiro receber as dependências pelo construtor. Nada de setters na classe. Gosto da idéia do &quot;Good Citizen Pattern&quot; http://www.picocontainer.org/patterns.html
Um design desacoplado e coeso, na grande maioria das vezes, não vai ter muitas dependências. Então eu prefiro refatorar, receber as dependências pelo construtor e não ter que me preocupar com comportamentos inesperados das minhas dependências.</description>
		<content:encoded><![CDATA[<p>Eu, de forma geral, prefiro receber as dependências pelo construtor. Nada de setters na classe. Gosto da idéia do &#8220;Good Citizen Pattern&#8221; <a href="http://www.picocontainer.org/patterns.html" rel="nofollow">http://www.picocontainer.org/patterns.html</a><br />
Um design desacoplado e coeso, na grande maioria das vezes, não vai ter muitas dependências. Então eu prefiro refatorar, receber as dependências pelo construtor e não ter que me preocupar com comportamentos inesperados das minhas dependências.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Giovanni Bassi</title>
		<link>http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/#comment-86</link>
		<dc:creator>Giovanni Bassi</dc:creator>
		<pubDate>Fri, 02 Oct 2009 21:59:26 +0000</pubDate>
		<guid isPermaLink="false">/post/2009/09/26/Como-gerenciar-a-dependencia-entre-entidades-e-repositorios.aspx#comment-86</guid>
		<description>Não gosto que as entidades conheçam repositórios, apesar de ser possível. Evito ao máximo.
Tem uma que você não abordou, que seria usar um Registry, como um service locator. É totalmente mockável, e funciona bem. Vc fica com a dependência do registry, mas num cenário horrível... então tudo bem. De qq forma eu sempre avaliaria caso a caso.</description>
		<content:encoded><![CDATA[<p>Não gosto que as entidades conheçam repositórios, apesar de ser possível. Evito ao máximo.<br />
Tem uma que você não abordou, que seria usar um Registry, como um service locator. É totalmente mockável, e funciona bem. Vc fica com a dependência do registry, mas num cenário horrível&#8230; então tudo bem. De qq forma eu sempre avaliaria caso a caso.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gustavo A Oliva</title>
		<link>http://www.aniche.com.br/2009/09/como-gerenciar-a-dependencia-entre-entidades-e-repositorios/#comment-85</link>
		<dc:creator>Gustavo A Oliva</dc:creator>
		<pubDate>Wed, 30 Sep 2009 17:12:57 +0000</pubDate>
		<guid isPermaLink="false">/post/2009/09/26/Como-gerenciar-a-dependencia-entre-entidades-e-repositorios.aspx#comment-85</guid>
		<description>Excelente post! Sempre tive d&#250;vidas sobre este assunto e j&#225; tinha tido algumas id&#233;ias a respeito. Colocar as diversas estrat&#233;gias de forma estruturada (e permitindo assim que sejam comparadas) foi show.</description>
		<content:encoded><![CDATA[<p>Excelente post! Sempre tive d&#250;vidas sobre este assunto e j&#225; tinha tido algumas id&#233;ias a respeito. Colocar as diversas estrat&#233;gias de forma estruturada (e permitindo assim que sejam comparadas) foi show.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

