<?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: Entidades Managed, Transient e Detached no Hibernate e JPA</title>
	<atom:link href="http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/</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: Vinícius</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-95032</link>
		<dc:creator>Vinícius</dc:creator>
		<pubDate>Sun, 04 Dec 2011 23:36:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-95032</guid>
		<description>Excelente artigo! Acabou de resolver horas de pesquisa em forums e sites! 

A solução abaixo resolveu o problema:

Cliente c = new Cliente();
c.setId(1);
c = em.merge(c);
c.setNome(&quot;Cliente com nome alterado&quot;);</description>
		<content:encoded><![CDATA[<p>Excelente artigo! Acabou de resolver horas de pesquisa em forums e sites! </p>
<p>A solução abaixo resolveu o problema:</p>
<p>Cliente c = new Cliente();<br />
c.setId(1);<br />
c = em.merge(c);<br />
c.setNome(&#8220;Cliente com nome alterado&#8221;);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Leandro</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-91828</link>
		<dc:creator>Leandro</dc:creator>
		<pubDate>Sun, 16 Oct 2011 19:41:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-91828</guid>
		<description>Qual seria a melhor forma de contornar esse problema:

Utilizando em uma aplicação SpringRoo e JSF 2.0, como o SpringRoo trabalha com JPA, em uma lista &quot;DataTable&quot;
mostro os clientes cadastrados ao clicar no botão alterar carrego os dados do cliente em um formulario para alteração ao clicar no botão salvar mesmo o cliente ja possuindo um id o metodo merge esta inserindo um novo cliente ao inves de alterar, se mudar o scope do controller jsf de request para session funcionar normal, como devo proceder utilizando o scope request?

obrigado</description>
		<content:encoded><![CDATA[<p>Qual seria a melhor forma de contornar esse problema:</p>
<p>Utilizando em uma aplicação SpringRoo e JSF 2.0, como o SpringRoo trabalha com JPA, em uma lista &#8220;DataTable&#8221;<br />
mostro os clientes cadastrados ao clicar no botão alterar carrego os dados do cliente em um formulario para alteração ao clicar no botão salvar mesmo o cliente ja possuindo um id o metodo merge esta inserindo um novo cliente ao inves de alterar, se mudar o scope do controller jsf de request para session funcionar normal, como devo proceder utilizando o scope request?</p>
<p>obrigado</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Entidades Managed, Transient e Detached no Hibernate e JPA</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-67050</link>
		<dc:creator>Entidades Managed, Transient e Detached no Hibernate e JPA</dc:creator>
		<pubDate>Thu, 22 Jul 2010 22:21:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-67050</guid>
		<description>[...] Fonte: http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/   Frameworks, Hibernate, Java, Web [...]</description>
		<content:encoded><![CDATA[<p>[...] Fonte: http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/   Frameworks, Hibernate, Java, Web [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Paulo Silveira</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-61015</link>
		<dc:creator>Paulo Silveira</dc:creator>
		<pubDate>Thu, 12 Nov 2009 17:33:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-61015</guid>
		<description>oi Thiago!

É exatamente esse caso que voce pode usar o .merge()!

abracos</description>
		<content:encoded><![CDATA[<p>oi Thiago!</p>
<p>É exatamente esse caso que voce pode usar o .merge()!</p>
<p>abracos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Thiago</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-61011</link>
		<dc:creator>Thiago</dc:creator>
		<pubDate>Thu, 12 Nov 2009 05:15:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-61011</guid>
		<description>Como faço para salvar um objeto transient que já existe no banco?

Digamos que na tabela cliente eu tenha o seguinte registro:

ID = 2
Nome = &quot;Nome antigo do cliente&quot;

Cliente c = new Cliente();
c.setId(2);
c.setNome(&quot;Nome novo do cliente&quot;);

Qual comando devo executar para que o Hibernate gere o seguinte comando SQL

UPDATE Cliente SET Nome=&#039;Nome novo do cliente&#039; WHERE ID=2

Ou algo similar?

Qualquer ajuda será bem-vinda!

Grato</description>
		<content:encoded><![CDATA[<p>Como faço para salvar um objeto transient que já existe no banco?</p>
<p>Digamos que na tabela cliente eu tenha o seguinte registro:</p>
<p>ID = 2<br />
Nome = &#8220;Nome antigo do cliente&#8221;</p>
<p>Cliente c = new Cliente();<br />
c.setId(2);<br />
c.setNome(&#8220;Nome novo do cliente&#8221;);</p>
<p>Qual comando devo executar para que o Hibernate gere o seguinte comando SQL</p>
<p>UPDATE Cliente SET Nome=&#8217;Nome novo do cliente&#8217; WHERE ID=2</p>
<p>Ou algo similar?</p>
<p>Qualquer ajuda será bem-vinda!</p>
<p>Grato</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Enfrentando a LazyInitializationException no Hibernate &#124; blog.caelum.com.br</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-60124</link>
		<dc:creator>Enfrentando a LazyInitializationException no Hibernate &#124; blog.caelum.com.br</dc:creator>
		<pubDate>Wed, 14 Oct 2009 05:25:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-60124</guid>
		<description>[...] para ler aqui no blog da Caelum a respeito de outras exceptions frequentes no Hibernate, sobre os estados de uma entidade na JPA, hábitos importantes para todo desenvolvedor Hibernate e mapeamento de herança, além de muitos [...]</description>
		<content:encoded><![CDATA[<p>[...] para ler aqui no blog da Caelum a respeito de outras exceptions frequentes no Hibernate, sobre os estados de uma entidade na JPA, hábitos importantes para todo desenvolvedor Hibernate e mapeamento de herança, além de muitos [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Mayara</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-59850</link>
		<dc:creator>Mayara</dc:creator>
		<pubDate>Fri, 18 Sep 2009 00:36:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-59850</guid>
		<description>Otima explicação, de todas que li hoje essa foi a que realmente me ajudou com os conceitos.

Obrigada e parabens pelo post resumido
ehehhe</description>
		<content:encoded><![CDATA[<p>Otima explicação, de todas que li hoje essa foi a que realmente me ajudou com os conceitos.</p>
<p>Obrigada e parabens pelo post resumido<br />
ehehhe</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Paulo Silveira</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-53928</link>
		<dc:creator>Paulo Silveira</dc:creator>
		<pubDate>Mon, 23 Mar 2009 08:55:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-53928</guid>
		<description>Diego, exemplo perfeito, ja que se o managed bean estiver configurado como session scope, e seu ciclo de vida do hibernate for request, as entidades referenciadas pelo managed bean estarao detached na proxima requisicao, sendo necessario um merge, caso contrario voce perdera as informacoes atualizadas na requisicao anterior!</description>
		<content:encoded><![CDATA[<p>Diego, exemplo perfeito, ja que se o managed bean estiver configurado como session scope, e seu ciclo de vida do hibernate for request, as entidades referenciadas pelo managed bean estarao detached na proxima requisicao, sendo necessario um merge, caso contrario voce perdera as informacoes atualizadas na requisicao anterior!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Diego Raphael</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-53927</link>
		<dc:creator>Diego Raphael</dc:creator>
		<pubDate>Mon, 23 Mar 2009 08:07:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-53927</guid>
		<description>Entendi Paulo,

Se faz útil a utilização do merge no caso de um POJO vinculado ao ManagedBean, onde será alterado as informações mostrada pelo jsf, ou algo do gênero.

Abraços!</description>
		<content:encoded><![CDATA[<p>Entendi Paulo,</p>
<p>Se faz útil a utilização do merge no caso de um POJO vinculado ao ManagedBean, onde será alterado as informações mostrada pelo jsf, ou algo do gênero.</p>
<p>Abraços!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Paulo Silveira</title>
		<link>http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/comment-page-1/#comment-53707</link>
		<dc:creator>Paulo Silveira</dc:creator>
		<pubDate>Thu, 19 Mar 2009 08:06:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/#comment-53707</guid>
		<description>Oi, sem duvida Diego. É o mesmo sim.

Acho que faltou eu dar a motivacao para mostrar a necessidade do merge, e ele só vai ser realmente necessario quando tivermos uma instancia detached com informacoes novas e precisamos refleti-las no BD. Imagine que o cliente estivesse com mais atributos ja populados do que apenas o ID, como por exemplo o endereco, mas voce nem sabe mais quais dados estao novos e quais nao (no caso de vir de um wizard na web, isso acontece sempre):

&lt;code&gt;
Cliente cliente = em.find(Cliente.class, 1);
cliente.setEndereco(&quot; endereco novo&quot; );

// depois de alguns requests na web, preenchendo o wizard, voce quer atualiza-lo e ainda alterar mais alguns dados.
// lembre-se que o cliente aqui ja esta detached ja que usamos Open-Session-In-View

cliente = em.merge(cliente);
cliente.setNome(”Diego Raphael”);
&lt;/code&gt;

Agora ele estara com endereço e nome atualizados. Se voce fizesse find novamente, perderia o endereço, claro.</description>
		<content:encoded><![CDATA[<p>Oi, sem duvida Diego. É o mesmo sim.</p>
<p>Acho que faltou eu dar a motivacao para mostrar a necessidade do merge, e ele só vai ser realmente necessario quando tivermos uma instancia detached com informacoes novas e precisamos refleti-las no BD. Imagine que o cliente estivesse com mais atributos ja populados do que apenas o ID, como por exemplo o endereco, mas voce nem sabe mais quais dados estao novos e quais nao (no caso de vir de um wizard na web, isso acontece sempre):</p>
<p><code><br />
Cliente cliente = em.find(Cliente.class, 1);<br />
cliente.setEndereco(" endereco novo" );</p>
<p>// depois de alguns requests na web, preenchendo o wizard, voce quer atualiza-lo e ainda alterar mais alguns dados.<br />
// lembre-se que o cliente aqui ja esta detached ja que usamos Open-Session-In-View</p>
<p>cliente = em.merge(cliente);<br />
cliente.setNome(”Diego Raphael”);<br />
</code></p>
<p>Agora ele estara com endereço e nome atualizados. Se voce fizesse find novamente, perderia o endereço, claro.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

