<?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>Comentários sobre: Brincando com Generics: o BizarreGenericDao</title>
	<atom:link href="http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<lastBuildDate>Wed, 16 May 2012 20:16:36 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Por: Extrair nome do tipo Generico &#124; MarVinSiq.com &#8211; Desenvolvimento de sistemas, acessibilidade, padrões Web e tudo mais o que vier na cabeça.</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-92623</link>
		<dc:creator>Extrair nome do tipo Generico &#124; MarVinSiq.com &#8211; Desenvolvimento de sistemas, acessibilidade, padrões Web e tudo mais o que vier na cabeça.</dc:creator>
		<pubDate>Mon, 24 Oct 2011 10:15:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-92623</guid>
		<description>[...] http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/ [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/" rel="nofollow">http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Possibilidades de design no uso do seu Generic DAO &#124; blog.caelum.com.br</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-67136</link>
		<dc:creator>Possibilidades de design no uso do seu Generic DAO &#124; blog.caelum.com.br</dc:creator>
		<pubDate>Tue, 27 Jul 2010 02:57:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-67136</guid>
		<description>[...] vezes, quando estamos criando nosso sistema temos a tentação de criar o GenericDAO para não ter que ficar repetindo as operações CRUD e [...]</description>
		<content:encoded><![CDATA[<p>[...] vezes, quando estamos criando nosso sistema temos a tentação de criar o GenericDAO para não ter que ficar repetindo as operações CRUD e [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Flavio</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-57829</link>
		<dc:creator>Flavio</dc:creator>
		<pubDate>Sat, 20 Jun 2009 21:40:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-57829</guid>
		<description>Como não dava p criar quase 100 classes anonimas na mão no projeto que trabalho, tive que aumentar um pouco a &quot;inovação&quot;. 
Class clazz = (Class) ((ParameterizedType) 
getClass().asSubclass(getClass()).getGenericSuperclass()).getActualTypeArguments()[0];</description>
		<content:encoded><![CDATA[<p>Como não dava p criar quase 100 classes anonimas na mão no projeto que trabalho, tive que aumentar um pouco a &#8220;inovação&#8221;.<br />
Class clazz = (Class) ((ParameterizedType)<br />
getClass().asSubclass(getClass()).getGenericSuperclass()).getActualTypeArguments()[0];</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DAO Generico - um exemplo a pedidos at Blog do Urubatan</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-48008</link>
		<dc:creator>DAO Generico - um exemplo a pedidos at Blog do Urubatan</dc:creator>
		<pubDate>Tue, 23 Sep 2008 13:08:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-48008</guid>
		<description>[...] no blog da Caelum a um tempo atras fizeram um POST sobre um DAO genérico, meio bizarro &#8230; Bom, eu uso um DAO genérico a algum tempo, mas o meu DAO genérico tm algumas features a [...]</description>
		<content:encoded><![CDATA[<p>[...] no blog da Caelum a um tempo atras fizeram um POST sobre um DAO genérico, meio bizarro &#8230; Bom, eu uso um DAO genérico a algum tempo, mas o meu DAO genérico tm algumas features a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: ronildo braga</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-37720</link>
		<dc:creator>ronildo braga</dc:creator>
		<pubDate>Thu, 08 May 2008 23:14:52 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-37720</guid>
		<description>Acho que fica mais elegante desta forma abaixo, e não me parece gambiarra:
public class GenericDAO implements GenericRepository{

    protected EntityManager em;
    
    public DAOImpl setEntityManager(EntityManager em){
        this.em = em;
        return (DAOImpl)this;
    }

    public void persist(T entity){
        try{
            em.persist(entity);
        }catch(PersistenceException e){
            logger.severe(CANNOT_PERSIST);
            throw new RepositoryException(e);
        }
    }
}

E para instanciar vc faz o seguinte:
new LoginDAO().setEntityManager(entityManager);

Eu também omiti a maior parte do código por questão de simplicidade, mas vc pode visualizar o restante do código no meu blog</description>
		<content:encoded><![CDATA[<p>Acho que fica mais elegante desta forma abaixo, e não me parece gambiarra:<br />
public class GenericDAO implements GenericRepository{</p>
<p>    protected EntityManager em;</p>
<p>    public DAOImpl setEntityManager(EntityManager em){<br />
        this.em = em;<br />
        return (DAOImpl)this;<br />
    }</p>
<p>    public void persist(T entity){<br />
        try{<br />
            em.persist(entity);<br />
        }catch(PersistenceException e){<br />
            logger.severe(CANNOT_PERSIST);<br />
            throw new RepositoryException(e);<br />
        }<br />
    }<br />
}</p>
<p>E para instanciar vc faz o seguinte:<br />
new LoginDAO().setEntityManager(entityManager);</p>
<p>Eu também omiti a maior parte do código por questão de simplicidade, mas vc pode visualizar o restante do código no meu blog</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Paulo Silveira</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-35916</link>
		<dc:creator>Paulo Silveira</dc:creator>
		<pubDate>Wed, 16 Apr 2008 01:10:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-35916</guid>
		<description>Edson, mas qual é o problema dele gerar mais uma classe interna? E sobre nao ser a mesma classe, também não vejo problema.

De qualquer maneira, esse post aqui foi para mostrar como a linguagem é complicada, e não aconselho o uso de um DAO tão confuso assim (e isto está explícito no final do post!).</description>
		<content:encoded><![CDATA[<p>Edson, mas qual é o problema dele gerar mais uma classe interna? E sobre nao ser a mesma classe, também não vejo problema.</p>
<p>De qualquer maneira, esse post aqui foi para mostrar como a linguagem é complicada, e não aconselho o uso de um DAO tão confuso assim (e isto está explícito no final do post!).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Edson Watanabe</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-35797</link>
		<dc:creator>Edson Watanabe</dc:creator>
		<pubDate>Tue, 15 Apr 2008 03:18:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-35797</guid>
		<description>Isso dá o seguinte problema:
&lt;code&gt;
Dao dao = new Dao(session){};
Dao dao2 = new Dao(session){};
&lt;/code&gt;
Cada vez que se declara uma nova variável, cria-se uma nova classe anônima. Se você declarar 10 variáveis, vai ter 10 classes diferentes. Outra coisa chata é que:

dao.getClass().equals (dao2.getClass()) retorna false, o que é meio estranho se você simplesmente olhar a declaração.</description>
		<content:encoded><![CDATA[<p>Isso dá o seguinte problema:<br />
<code><br />
Dao dao = new Dao(session){};<br />
Dao dao2 = new Dao(session){};<br />
</code><br />
Cada vez que se declara uma nova variável, cria-se uma nova classe anônima. Se você declarar 10 variáveis, vai ter 10 classes diferentes. Outra coisa chata é que:</p>
<p>dao.getClass().equals (dao2.getClass()) retorna false, o que é meio estranho se você simplesmente olhar a declaração.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Alexandro</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-16810</link>
		<dc:creator>Alexandro</dc:creator>
		<pubDate>Thu, 12 Jul 2007 14:56:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-16810</guid>
		<description>Muito boa esta solução.
Estava &quot;batendo&quot; a cabeça a algum tempo para melhorar algumas classes genéricas em que eu tinha que passar o Class e isso resolveu o meu problema.</description>
		<content:encoded><![CDATA[<p>Muito boa esta solução.<br />
Estava &#8220;batendo&#8221; a cabeça a algum tempo para melhorar algumas classes genéricas em que eu tinha que passar o Class e isso resolveu o meu problema.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Fabio Kung</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-277</link>
		<dc:creator>Fabio Kung</dc:creator>
		<pubDate>Mon, 30 Oct 2006 20:43:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-277</guid>
		<description>Realmente muito &lt;strike&gt;boa a gam&lt;/strike&gt; bom o ajuste fino!</description>
		<content:encoded><![CDATA[<p>Realmente muito <strike>boa a gam</strike> bom o ajuste fino!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Ricardo</title>
		<link>http://blog.caelum.com.br/brincando-com-generics-o-bizarregenericdao/comment-page-1/#comment-276</link>
		<dc:creator>Ricardo</dc:creator>
		<pubDate>Mon, 30 Oct 2006 18:48:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/#comment-276</guid>
		<description>{ ops, abre e fecha chaves }</description>
		<content:encoded><![CDATA[<p>{ ops, abre e fecha chaves }</p>
]]></content:encoded>
	</item>
</channel>
</rss>

