<?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>Comentarios en: iBATIS vs Hibernate</title>
	<atom:link href="http://www.javisjava.com/blog/ibatis-vs-hibernate/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javisjava.com/blog/ibatis-vs-hibernate</link>
	<description>Las últimas noticias y opiniones sobre el mundo de la programación.</description>
	<lastBuildDate>Wed, 28 Jul 2010 11:01:13 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: Lic. Enel R. Almonte P.</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7678</link>
		<dc:creator>Lic. Enel R. Almonte P.</dc:creator>
		<pubDate>Wed, 21 Jul 2010 21:58:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7678</guid>
		<description>Javier se nota que entiendes bien el tema. 
gran aporte.</description>
		<content:encoded><![CDATA[<p>Javier se nota que entiendes bien el tema.<br />
gran aporte.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Emanuel</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7677</link>
		<dc:creator>Emanuel</dc:creator>
		<pubDate>Mon, 19 Jul 2010 22:42:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7677</guid>
		<description>Muy buena info, felicitaciones!!

Dejo más info en :

http://emanuelpeg.blogspot.com/2010/06/myibatis.html

Saludos.</description>
		<content:encoded><![CDATA[<p>Muy buena info, felicitaciones!!</p>
<p>Dejo más info en :</p>
<p><a href="http://emanuelpeg.blogspot.com/2010/06/myibatis.html" rel="nofollow">http://emanuelpeg.blogspot.com/2010/06/myibatis.html</a></p>
<p>Saludos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: moravi</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7675</link>
		<dc:creator>moravi</dc:creator>
		<pubDate>Thu, 20 May 2010 08:07:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7675</guid>
		<description>Hola Javier , he leido los documentos sobre iBatis y me ha impresionado su potencial,
estoy usando el Netbeans 6.7.1 y postgresql quisiera saber que componentes .jar
debo agregar a mi proyecto para empezar a practicar la teoria.

Gracias.</description>
		<content:encoded><![CDATA[<p>Hola Javier , he leido los documentos sobre iBatis y me ha impresionado su potencial,<br />
estoy usando el Netbeans 6.7.1 y postgresql quisiera saber que componentes .jar<br />
debo agregar a mi proyecto para empezar a practicar la teoria.</p>
<p>Gracias.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: LuigiBuilder</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7674</link>
		<dc:creator>LuigiBuilder</dc:creator>
		<pubDate>Wed, 12 May 2010 10:58:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7674</guid>
		<description>Hola javier,
Podrias publicar un ejemplo de transacciones con spring e ibatis, sobretodo el uso de anotaciones @Transactional.

Gracias,</description>
		<content:encoded><![CDATA[<p>Hola javier,<br />
Podrias publicar un ejemplo de transacciones con spring e ibatis, sobretodo el uso de anotaciones @Transactional.</p>
<p>Gracias,</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: javier</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7652</link>
		<dc:creator>javier</dc:creator>
		<pubDate>Tue, 06 Apr 2010 14:17:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7652</guid>
		<description>Horacio, por supuesto que es posible. A ningún motor de persistencia le puede faltar esa funcionalidad.
Según cómo uses iBatis, la gestión de las transacciones se realiza de diferente forma. Si utilizas la API de iBatis directamente, tendrás que definir las transacciones programáticamante en el código Java, tal y como se muestra en la documentación de la clase SqlMapClient.

http://ibatis.apache.org/docs/java/dev/com/ibatis/sqlmap/client/SqlMapClient.html
&lt;pre&gt;
    try {
        sqlMap.startTransaction()
        Employee emp2 = new Employee();
        // ...set emp2 data
        Integer generatedKey = (Integer) sqlMap.insert (&quot;insertEmployee&quot;, emp2);
        emp2.setFavouriteColour (&quot;green&quot;);
        sqlMap.update(&quot;updateEmployee&quot;, emp2);
        sqlMap.commitTransaction();
    } finally {
        sqlMap.endTransaction();
    }
&lt;/pre&gt;
Si utilizas la antigua capa DAO de iBatis (que está descontinuada y desaconsejada), también tendrás que marcar desde Java las transacciones.

Pero si usas Spring, entonces puedes declarar en su configuración cuál quieres que sea la transaccionalidad. Lo clásico es que cualquier funcionalidad que haya dentro de un método de una clase de servicio (Manager) sea transaccional.
&lt;pre&gt;
    &lt;aop:config&gt;
        &lt;aop:advisor id=&quot;managerTx&quot; advice-ref=&quot;txAdvice&quot; pointcut=&quot;execution(* *..service.*Manager.*(..))&quot;/&gt;
    &lt;/aop:config&gt;
&lt;/pre&gt;
Aunque también es posible hacerlo de forma más controlada, con la anotación @Transactional sobre el método que contenga las consultas que deseemos que se ejecuten como una transacción.</description>
		<content:encoded><![CDATA[<p>Horacio, por supuesto que es posible. A ningún motor de persistencia le puede faltar esa funcionalidad.<br />
Según cómo uses iBatis, la gestión de las transacciones se realiza de diferente forma. Si utilizas la API de iBatis directamente, tendrás que definir las transacciones programáticamante en el código Java, tal y como se muestra en la documentación de la clase SqlMapClient.</p>
<p><a href="http://ibatis.apache.org/docs/java/dev/com/ibatis/sqlmap/client/SqlMapClient.html" rel="nofollow">http://ibatis.apache.org/docs/java/dev/com/ibatis/sqlmap/client/SqlMapClient.html</a></p>
<pre>
    try {
        sqlMap.startTransaction()
        Employee emp2 = new Employee();
        // ...set emp2 data
        Integer generatedKey = (Integer) sqlMap.insert ("insertEmployee", emp2);
        emp2.setFavouriteColour ("green");
        sqlMap.update("updateEmployee", emp2);
        sqlMap.commitTransaction();
    } finally {
        sqlMap.endTransaction();
    }
</pre>
<p>Si utilizas la antigua capa DAO de iBatis (que está descontinuada y desaconsejada), también tendrás que marcar desde Java las transacciones.</p>
<p>Pero si usas Spring, entonces puedes declarar en su configuración cuál quieres que sea la transaccionalidad. Lo clásico es que cualquier funcionalidad que haya dentro de un método de una clase de servicio (Manager) sea transaccional.</p>
<pre>
    &lt;aop:config&gt;
        &lt;aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Manager.*(..))"/&gt;
    &lt;/aop:config&gt;
</pre>
<p>Aunque también es posible hacerlo de forma más controlada, con la anotación @Transactional sobre el método que contenga las consultas que deseemos que se ejecuten como una transacción.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Horacio</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7647</link>
		<dc:creator>Horacio</dc:creator>
		<pubDate>Mon, 29 Mar 2010 15:18:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7647</guid>
		<description>Es posible ejecutar transacciones con iBatis?
Alguien me puede responder esta pregunta por favor?</description>
		<content:encoded><![CDATA[<p>Es posible ejecutar transacciones con iBatis?<br />
Alguien me puede responder esta pregunta por favor?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: xcom</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7632</link>
		<dc:creator>xcom</dc:creator>
		<pubDate>Thu, 31 Dec 2009 22:10:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7632</guid>
		<description>Cual es la version estable de ibates</description>
		<content:encoded><![CDATA[<p>Cual es la version estable de ibates</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: jose angel</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7595</link>
		<dc:creator>jose angel</dc:creator>
		<pubDate>Tue, 24 Nov 2009 10:35:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7595</guid>
		<description>Hola,

Actualmente estoy usando este framework en un proyecto J2EE muy grande que tiene una parte en Host (Mainframe Z10) y una parte en distribuido, un cluster de servidores. El problema es que la misma aplicación que en el Host responde perfectamente, en el distribuido sólo es capaz de lanzar las queries una vez. Cachea el resultado y sólo responde si los datos de entrada son los mismos que los de la primera petición.

¿Alguien se ha enfrentado alguna vez a un problema similar? ¿Me podéis orientar en este tema?</description>
		<content:encoded><![CDATA[<p>Hola,</p>
<p>Actualmente estoy usando este framework en un proyecto J2EE muy grande que tiene una parte en Host (Mainframe Z10) y una parte en distribuido, un cluster de servidores. El problema es que la misma aplicación que en el Host responde perfectamente, en el distribuido sólo es capaz de lanzar las queries una vez. Cachea el resultado y sólo responde si los datos de entrada son los mismos que los de la primera petición.</p>
<p>¿Alguien se ha enfrentado alguna vez a un problema similar? ¿Me podéis orientar en este tema?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: christian</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7536</link>
		<dc:creator>christian</dc:creator>
		<pubDate>Sun, 08 Nov 2009 04:41:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7536</guid>
		<description>Gracias por la ayuda Javier, me sirvio bastante y como dices IBATIS es bastante potente, con esta herramienta se me hace todo facil. Muchas gracias nuevamente.</description>
		<content:encoded><![CDATA[<p>Gracias por la ayuda Javier, me sirvio bastante y como dices IBATIS es bastante potente, con esta herramienta se me hace todo facil. Muchas gracias nuevamente.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: javier</title>
		<link>http://www.javisjava.com/blog/ibatis-vs-hibernate/comment-page-1#comment-7535</link>
		<dc:creator>javier</dc:creator>
		<pubDate>Sat, 07 Nov 2009 20:29:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.javisjava.com/blog/?p=50#comment-7535</guid>
		<description>Las consultas dinámicas se explican en un capítulo completo de la documentación de iBATIS (actualmente en la página 49).

Dispones de la etiqueta &lt;code&gt;&lt;dynamic&gt;&lt;/code&gt;, dentro de la cual puedes incluir una serie de etiquetas condicionales, de forma que la SQL final que se construye en cada ejecución dependerá de los valores de los parámetros que se pasan.

Pongamos un ejemplo con los datos que das. Imagina que tienes un HashMap en el que, en cierto momento de tu código se pueden introducir o no los siguientes pares clave-valor.
&lt;code&gt;
Map&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
if (condition) {
&#160;&#160;&#160;&#160;map.put(&quot;name&quot;, &quot;Javier&quot;);
&#160;&#160;&#160;&#160;map.put(&quot;age&quot;, new Integer(32));
}
// pasamos el mapa como parámetro a una consulta de iBATIS
&lt;/code&gt;

Una consulta que haría uso de la información de &lt;code&gt;name&lt;/code&gt; y &lt;code&gt;age&lt;/code&gt; sólo en los supuestos que dices, sería:
&lt;code&gt;
&lt;select id=&quot;dynamicSelectUser&quot; result-class=&quot;com.javisjava.model.User&quot;&gt;
&#160;&#160;&#160;&#160;select * from User
&#160;&#160;&#160;&#160;&lt;dynamic prepend=&quot;where&quot;&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;isEmpty property=&quot;name&quot; prepend=&quot;and&quot;&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name = #name#
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/isEmpty&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;isGreaterThan prepend=&quot;and&quot; property=&quot;age&quot; compareValue=&quot;0&quot;&gt;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;age = #age#
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/isGreaterThan&gt;
&#160;&#160;&#160;&#160;&lt;/dynamic&gt;
&lt;/select&gt;
&lt;/code&gt;

Si &lt;code&gt;condition&lt;/code&gt; es &lt;code&gt;false&lt;/code&gt; la SQL será:
&lt;code&gt;
select * from User
&lt;/code&gt;
Si es &lt;code&gt;true&lt;/code&gt;:
&lt;code&gt;
select * from User where name = &#039;Javier&#039; and age = 32
&lt;/code&gt;
Mírate bien la &lt;a href=&quot;http://svn.apache.org/repos/asf/ibatis/java/ibatis-2/trunk/ibatis-2-docs/en/&quot; rel=&quot;nofollow&quot;&gt;documentación&lt;/a&gt;, y verás que iBATIS es bastante potente en cuanto a la creación de consultas dinámicas.</description>
		<content:encoded><![CDATA[<p>Las consultas dinámicas se explican en un capítulo completo de la documentación de iBATIS (actualmente en la página 49).</p>
<p>Dispones de la etiqueta <code>&lt;dynamic&gt;</code>, dentro de la cual puedes incluir una serie de etiquetas condicionales, de forma que la SQL final que se construye en cada ejecución dependerá de los valores de los parámetros que se pasan.</p>
<p>Pongamos un ejemplo con los datos que das. Imagina que tienes un HashMap en el que, en cierto momento de tu código se pueden introducir o no los siguientes pares clave-valor.<br />
<code><br />
Map<string , Object> map = new HashMap</string><string , Object>();<br />
if (condition) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;map.put(&quot;name&quot;, &quot;Javier&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;map.put(&quot;age&quot;, new Integer(32));<br />
}<br />
// pasamos el mapa como parámetro a una consulta de iBATIS<br />
</string></code></p>
<p>Una consulta que haría uso de la información de <code>name</code> y <code>age</code> sólo en los supuestos que dices, sería:<br />
<code><br />
&lt;select id="dynamicSelectUser" result-class="com.javisjava.model.User"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;select * from User<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;dynamic prepend="where"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;isEmpty property="name" prepend="and"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = #name#<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/isEmpty&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;isGreaterThan prepend="and" property="age" compareValue="0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age = #age#<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/isGreaterThan&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/dynamic&gt;<br />
&lt;/select&gt;<br />
</code></p>
<p>Si <code>condition</code> es <code>false</code> la SQL será:<br />
<code><br />
select * from User<br />
</code><br />
Si es <code>true</code>:<br />
<code><br />
select * from User where name = 'Javier' and age = 32<br />
</code><br />
Mírate bien la <a href="http://svn.apache.org/repos/asf/ibatis/java/ibatis-2/trunk/ibatis-2-docs/en/" rel="nofollow">documentación</a>, y verás que iBATIS es bastante potente en cuanto a la creación de consultas dinámicas.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
