<?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>Xnoccio.com &#187; hibernate</title>
	<atom:link href="http://www.xnoccio.com/es/tag/hibernate/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xnoccio.com</link>
	<description>Blog de viavansi</description>
	<lastBuildDate>Fri, 27 Jan 2012 19:59:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tips: Hibernate y los prefijos de tablas</title>
		<link>http://www.xnoccio.com/es/130-tips-hibernate-y-los-prefijos-de-tablas/</link>
		<comments>http://www.xnoccio.com/es/130-tips-hibernate-y-los-prefijos-de-tablas/#comments</comments>
		<pubDate>Thu, 14 Jun 2007 15:13:14 +0000</pubDate>
		<dc:creator>Felix G. Borrego</dc:creator>
				<category><![CDATA[xnoccio]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa]]></category>

		<guid isPermaLink="false">http://xnoccio.com/130-tips-hibernate-y-los-prefijos-de-tablas/</guid>
		<description><![CDATA[Un problema muy común al que nos llevamos tiempo enfrentando es el uso de prefijos de tablas en los entornos de producción. Si por ejemplo nos asignan el prefijo &#8220;SB_&#8221;, la tabla que durante el desarrollo se llamaba &#8220;PERSONA&#8221; ahora pasa a llamarse SB_PERONA.
Al utilizar JPA/EJB3.0 este problema queda mitigado al utilizar la anotación @TABLE, [...]]]></description>
			<content:encoded><![CDATA[<p>Un problema muy común al que nos llevamos tiempo enfrentando es el uso de prefijos de tablas en los entornos de producción. Si por ejemplo nos asignan el prefijo &#8220;SB_&#8221;, la tabla que durante el desarrollo se llamaba &#8220;PERSONA&#8221; ahora pasa a llamarse SB_PERONA.</p>
<p>Al utilizar JPA/EJB3.0 este problema queda mitigado al utilizar la anotación @TABLE, pero nos sigue obligando a modificar todas las entidades de la aplicación para adaptarlas al nuevo prefijo.</p>
<p>Para solucionar esto, la especificación JPA contempla la posibilidad de establecer estrategias para la generación del nombre definitivo. Utilizando la implementación de Hibernate-entitymanager es tan sencillo como implementar nuestra propia clase NameStrategy e indicarla en persistece.xml.</p>
<p>1.- Indicamos a Hibernate la implementación que deseamos utilizar:</p>
<pre><code>&lt;--Configuración para el soporte de prefijos en Hibernate. Estrategia para generación de nombres de tablas asociadas a anotaciones Table JPA3.0.--&gt;
&lt;property name="hibernate.ejb.naming_strategy" value="com.viavansi.framework.persistencia.jpa.NamingStrategy"&gt;&lt;/property&gt;
</code></pre>
<p>2.-Implementación, lo mas sencillo es sobreescribir  el método String tableName(String tableName)  de  <strong>DefaultComponentSafeNamingStrategy</strong> que implementa la gestión de anotaciones JPA en Hibernate.<br />
<a href="http://www.xnoccio.com/wp-content/uploads/2007/06/namingstrategyjava1.txt" onclick="return false;" title="Direct link to file"></a></p>
<p><a href="http://www.xnoccio.com/wp-content/uploads/2007/06/namingstrategyjava1.txt" title="It’s a replace of prefix tables on Hibernate">It’s a replace of prefix tables on Hibernate</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xnoccio.com/es/130-tips-hibernate-y-los-prefijos-de-tablas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Usando Hibernate 3.0: Delete ValueObject Where …</title>
		<link>http://www.xnoccio.com/es/57-usando-hibernate-30-delete-valueobject-where/</link>
		<comments>http://www.xnoccio.com/es/57-usando-hibernate-30-delete-valueobject-where/#comments</comments>
		<pubDate>Thu, 22 Feb 2007 18:07:07 +0000</pubDate>
		<dc:creator>dbejar</dc:creator>
				<category><![CDATA[xnoccio]]></category>
		<category><![CDATA[ejbql]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa]]></category>

		<guid isPermaLink="false">http://xnoccio.com/?p=57</guid>
		<description><![CDATA[No todas las implementaciones de persistencia JPA soportan usando EJBQL, el uso UPDATE y DELETE con clausula WHERE, pero Hibernate si es una de ellas. Si bien, recientemente nos llevamos una desagradable sorpresa al comprobar que Hibernate no soportaba la clausula LIMIT, no podemos si no congratularnos de que sinembargo si que dispongamos de esta otra [...]]]></description>
			<content:encoded><![CDATA[<p>No todas las implementaciones de persistencia JPA soportan usando EJBQL, el uso UPDATE y DELETE con clausula WHERE, pero Hibernate si es una de ellas. Si bien, recientemente nos llevamos una desagradable sorpresa al comprobar que Hibernate no soportaba la clausula LIMIT, no podemos si no congratularnos de que sinembargo si que dispongamos de esta otra funcionalidad implementada.<br />
A continuacion va un pequeño ejemplo de uso de DELETE con WHERE en lugar de por Id:</p>
<pre><code>
String ejbql = "DELETE "+ fooPersistentVOClass.getSimpleName() + " WHERE "+where;
manager.getTransaction().begin();
deletedEntities= manager.createQuery(ejbql).executeUpdate();
manager.getTransaction().commit();
</code></pre>
<p>Ojo que <em>executeUpdate()</em> no devuelve necesariamente el numero de columnas borradas en la operacion, devuelve el numero de entidades eliminadas.</p>
<p>Mas informacion en:</p>
<p>http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/batch.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xnoccio.com/es/57-usando-hibernate-30-delete-valueobject-where/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cuando Hibernate ataca a Postgres…</title>
		<link>http://www.xnoccio.com/es/46-cuando-hibernate-ataca-a-postgres/</link>
		<comments>http://www.xnoccio.com/es/46-cuando-hibernate-ataca-a-postgres/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 08:28:30 +0000</pubDate>
		<dc:creator>dbejar</dc:creator>
				<category><![CDATA[xnoccio]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[postgreSQL]]></category>

		<guid isPermaLink="false">http://xnoccio.com/?p=46</guid>
		<description><![CDATA[Quizas este post te ayude si estas buscando una solucion para alguna de las siguientes cuestiones:

Pasarle comillas a la BBDD atraves de Hibernate
Usar palabras reservadas del gestor de BBDD como nombre de columna o tabla en JPA.
Tienes una org.postgresql.util.PSQLException
Tienes una excepcion: column notation applied to type name, which is not a composite type

Recientemente jugando con JPA contra Postgres [...]]]></description>
			<content:encoded><![CDATA[<p>Quizas este post te ayude si estas buscando una solucion para alguna de las siguientes cuestiones:</p>
<ul>
<li>Pasarle comillas a la BBDD atraves de Hibernate</li>
<li>Usar palabras reservadas del gestor de BBDD como nombre de columna o tabla en JPA.</li>
<li>Tienes una <strong>org.postgresql.util.PSQLException</strong></li>
<li>Tienes una excepcion: <em>column notation applied to type name, which is not a composite type</em></li>
</ul>
<p>Recientemente jugando con JPA contra Postgres nos hemos encontrado con un problema de los que le pueden volver loco a uno. La excepcion que teniamos era:</p>
<pre><code>

 <strong>org.postgresql.util.PSQLException:</strong> ERROR: .user_id column notation applied to type name, which is not a composite type

</code></pre>
<p>Es el tipo de mensaje de error que despista y te puede hacer dar vueltas durante horas (o dias) buscando el problema donde no es.<br />
Nosotros estabamos convencidos de que habia algo erroneo en nuestras annotations de las columnas</p>
<pre><code>@Column(name="user_id")</code></pre>
<p>Pero lo que ya nos hacia tirarnos de los pelos era que nos pasaba lo mismo ya hiciesemos la query consultando <em>user_id</em> o <em>email</em>.</p>
<pre><code>

 <strong>org.postgresql.util.PSQLException:</strong> ERROR: .email column notation applied to type name, which is not a composite type

</code></pre>
<p>En general nos ocurria con cualesquiera columnas de nuestra tabla <em>user</em>.</p>
<p>Al final dimos con lo que estaba ocurriendo&#8230; el problema estaba en la annotation</p>
<pre><code>@Table(name="user")</code></pre>
<p>Os vais a reir&#8230; Resulta que <em>user</em> es una palabra reservada de Postgres, como tambien lo es <em>id</em> y algunas otras. Asi que si llamamos <em>user</em> a nuestra tabla, en la annotation necesitamos usar comillas para que el motor de BBDD no se haga un lio.</p>
<p>Y la forma de pasarle a Hibernate las comillas viene explicada aqui:<br />
<a href="http://www.hibernate.org/hib_docs/reference/en/html/mapping.html#mapping">http://www.hibernate.org/hib_docs/reference/en/html/mapping.html#mapping-quotedidentifiers</a></p>
<p>O sea, que usando la tilde invertida -`- Hibernate nos la traduce a las comillas adecuadas del dialecto adecuado.</p>
<p>Basicamente, nuestro problema se arreglo haciendo:</p>
<pre><code>@Table(name="`user`")</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xnoccio.com/es/46-cuando-hibernate-ataca-a-postgres/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

