<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acandal</id>
		<title>Dos Ideas. - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Acandal"/>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/Especial:Contribuciones/Acandal"/>
		<updated>2026-05-18T21:51:02Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4512</id>
		<title>Cómo mostrar un BigDecimal según la localización</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4512"/>
				<updated>2010-01-22T21:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separador de miles y con ''''.'''' para separador de decimales.&lt;br /&gt;
&lt;br /&gt;
Para mostrarlo según una localización determinada se puede utilizar la clase NumberFormat que formatea un objeto con valor numérico según el Locale que se indique:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BigDecimal myNumber = new BigDecimal(&amp;quot;-1234.56&amp;quot;);&lt;br /&gt;
NumberFormat format;&lt;br /&gt;
&lt;br /&gt;
//Utilizando el locale por default de la JVM...		&lt;br /&gt;
format = NumberFormat.getInstance();&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
//Utilizando un locale específico...&lt;br /&gt;
Locale localeArgentina = new Locale(&amp;quot;es&amp;quot;, &amp;quot;AR&amp;quot;);&lt;br /&gt;
format = NumberFormat.getInstance(localeArgentina);&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro para instanciar un objeto Locale es el [http://www.loc.gov/standards/iso639-2/php/English_list.php código de idioma (iso 639-1)] de dos caracteres y debe escribirse en minúsculas. El segundo parámetro corresponde a los [http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm códigos de país (iso 3166)] de dos letras y debe escribirse en mayúsculas.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/util/Locale.html Javadoc de Locale]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/text/NumberFormat.html Javadoc de NumberFormat]&lt;br /&gt;
&lt;br /&gt;
[[Category:Java]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4511</id>
		<title>Cómo mostrar un BigDecimal según la localización</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4511"/>
				<updated>2010-01-22T21:04:10Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separador de miles y con ''''.'''' para separador de decimales.&lt;br /&gt;
&lt;br /&gt;
Para mostrarlo según una localización determinada se puede utilizar la clase NumberFormat que formatea un objeto con valor numérico según el Locale que se indique:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BigDecimal myNumber = new BigDecimal(&amp;quot;-1234.56&amp;quot;);&lt;br /&gt;
NumberFormat format;&lt;br /&gt;
&lt;br /&gt;
//Utilizando el locale por default de la JVM...		&lt;br /&gt;
format = NumberFormat.getInstance();&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
//Utilizando un locale específico...&lt;br /&gt;
Locale localeArgentina = new Locale(&amp;quot;es&amp;quot;, &amp;quot;AR&amp;quot;);&lt;br /&gt;
format = NumberFormat.getInstance(localeArgentina);&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro para instanciar un objeto Locale es el [http://www.loc.gov/standards/iso639-2/php/English_list.php código de idioma (iso 639-1)] de dos caracteres y debe escribirse en minúsculas. El segundo parámetro corresponde a los [http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm códigos de país (iso 3166)] de dos letras y debe escribirse en mayúsculas.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/util/Locale.html#Locale%28java.lang.String,%20java.lang.String%29 Javadoc de Locale]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/text/NumberFormat.html Javadoc de NumberFormat]&lt;br /&gt;
&lt;br /&gt;
[[Category:Java]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4510</id>
		<title>Cómo mostrar un BigDecimal según la localización</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4510"/>
				<updated>2010-01-22T21:02:00Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separador de miles y con ''''.'''' para separador de decimales.&lt;br /&gt;
&lt;br /&gt;
Para mostrarlo según una localización determinada se puede utilizar la clase NumberFormat que formatea un objeto con valor numérico según el Locale que se indique:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BigDecimal myNumber = new BigDecimal(&amp;quot;-1234.56&amp;quot;);&lt;br /&gt;
NumberFormat format;&lt;br /&gt;
&lt;br /&gt;
//Utilizando el locale por default de la JVM...		&lt;br /&gt;
format = NumberFormat.getInstance();&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
//Utilizando un locale específico...&lt;br /&gt;
Locale localeArgentina = new Locale(&amp;quot;es&amp;quot;, &amp;quot;AR&amp;quot;);&lt;br /&gt;
format = NumberFormat.getInstance(localeArgentina);&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro para instanciar un objeto Locale es el [http://www.loc.gov/standards/iso639-2/php/English_list.php código de idioma (iso 639-1)] de dos caracteres y debe escribirse en minúsculas. El segundo parámetro corresponde a los [http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm códigos de país (iso 3166)] de dos letras y debe escribirse en mayúsculas.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Cómo mostrar un BigDecimal según la localización]]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;br /&gt;
&lt;br /&gt;
[[Category:Java]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4509</id>
		<title>Cómo mostrar un BigDecimal según la localización</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4509"/>
				<updated>2010-01-22T21:01:06Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separador de miles y con ''''.'''' para separador de decimales.&lt;br /&gt;
&lt;br /&gt;
Para mostrarlo según una localización determinada se puede utilizar la clase NumberFormat que formatea un objeto con valor numérico según el Locale que se indique:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BigDecimal myNumber = new BigDecimal(&amp;quot;-1234.56&amp;quot;);&lt;br /&gt;
NumberFormat format;&lt;br /&gt;
&lt;br /&gt;
//Utilizando el locale por default de la JVM...		&lt;br /&gt;
format = NumberFormat.getInstance();&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
//Utilizando un locale específico...&lt;br /&gt;
Locale localeArgentina = new Locale(&amp;quot;es&amp;quot;, &amp;quot;AR&amp;quot;);&lt;br /&gt;
format = NumberFormat.getInstance(localeArgentina);&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro para instanciar un objeto Locale es el [http://www.loc.gov/standards/iso639-2/php/English_list.php código de idioma (iso639-1)] de dos caracteres y debe escribirse en minúsculas. El segundo parámetro corresponde a los [http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm códigos de país (iso3166)] de dos letras deben escribirse en mayúsculas.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Cómo mostrar un BigDecimal según la localización]]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4508</id>
		<title>Cómo mostrar un BigDecimal según la localización</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4508"/>
				<updated>2010-01-22T20:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separador de miles y con ''''.'''' para separador de decimales.&lt;br /&gt;
&lt;br /&gt;
Para mostrarlo según una localización determinada se puede utilizar la clase NumberFormat que formatea un objeto con valor numérico según el Locale que se indique:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BigDecimal myNumber = new BigDecimal(&amp;quot;-1234.56&amp;quot;);&lt;br /&gt;
NumberFormat format;&lt;br /&gt;
&lt;br /&gt;
//Utilizando el locale por default de la JVM...		&lt;br /&gt;
format = NumberFormat.getInstance();&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
//Utilizando un locale específico...&lt;br /&gt;
Locale localeArgentina = new Locale(&amp;quot;es&amp;quot;, &amp;quot;AR&amp;quot;);&lt;br /&gt;
format = NumberFormat.getInstance(localeArgentina);&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro para instanciar un objeto Locale es el [http://www.loc.gov/standards/iso639-2/php/English_list.php código de idioma (iso639)] de dos caracteres y debe escribirse en minúsculas. El segundo parámetro corresponde a los [http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm códigos de país (iso3166)] de dos letras deben escribirse en mayúsculas.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Cómo mostrar un BigDecimal según la localización]]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4507</id>
		<title>Cómo mostrar un BigDecimal según la localización</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=C%C3%B3mo_mostrar_un_BigDecimal_seg%C3%BAn_la_localizaci%C3%B3n&amp;diff=4507"/>
				<updated>2010-01-22T20:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Página creada con 'Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separad…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si se quiere mostrar un objeto BigDecimal usando el método toString() de su clase, siempre se verá con el formato numérico norteamericano, es decir con '''','''' para separador de miles y con ''''.'''' para separador de decimales.&lt;br /&gt;
&lt;br /&gt;
Para mostrarlo según una localización determinada se puede utilizar la clase NumberFormat que formatea un objeto con valor numérico según el Locale que se indique:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BigDecimal myNumber = new BigDecimal(&amp;quot;-1234.56&amp;quot;);&lt;br /&gt;
NumberFormat format;&lt;br /&gt;
&lt;br /&gt;
//Utilizando el locale por default de la JVM...		&lt;br /&gt;
format = NumberFormat.getInstance();&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
//Utilizando un locale específico...&lt;br /&gt;
Locale localeArgentina = new Locale(&amp;quot;español&amp;quot;, &amp;quot;Argentina&amp;quot;);&lt;br /&gt;
format = NumberFormat.getInstance(localeArgentina);&lt;br /&gt;
System.out.println(format.format(myNumber));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Cómo mostrar un BigDecimal según la localización]]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=BigDecimal&amp;diff=4506</id>
		<title>BigDecimal</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=BigDecimal&amp;diff=4506"/>
				<updated>2010-01-22T20:38:23Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Java]]&lt;br /&gt;
La clase ''java.math.BigDecimal'' es una clase de [[Java]] para representar números con coma flotante, de manera precisa.&lt;br /&gt;
&lt;br /&gt;
La clase BigDecimal tiene métodos para operar al mismo (sumar, restar, multiplicar, dividir).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Construcción==&lt;br /&gt;
Para números con punto flotante (es decir, con parte decimal) la forma recomendada de construir un objeto BigDecimal es a través de un String.&lt;br /&gt;
&lt;br /&gt;
 BigDecimal a = new BigDecimal(&amp;quot;10.20&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
La construcción utilizando un double no es precisa, por la impresición intrínseca del Double.&lt;br /&gt;
&lt;br /&gt;
==El BigDecimal en el JDK 1.4 y el JDK 1.5==&lt;br /&gt;
&lt;br /&gt;
Supongamos el siguiente código:&lt;br /&gt;
&lt;br /&gt;
 new BigDecimal(1);&lt;br /&gt;
&lt;br /&gt;
Depende donde se compile y ejecute, podemos tener problemas. En particular:&lt;br /&gt;
&lt;br /&gt;
* Compilado con el JDK 1.4, funciona OK siempre&lt;br /&gt;
* Compilado con el JDK 1.5 y ejecutado en una JVM 1.5, funciona OK&lt;br /&gt;
* Compilado con el JDK 1.5 y ejecutado en una JVM 1.4, falla con un &amp;quot;NoSuchMethodError&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====El problema====&lt;br /&gt;
&lt;br /&gt;
En JSE 1.4 NO existe el constructor BigDecimal(int). Luego el compilador del JDK 1.4 resuelve la llamada hacia el constructor Big Decimal(double).&lt;br /&gt;
&lt;br /&gt;
Ahora bien, en JSE 1.5 se agregó el constructor BigDecimal(int). Al usar este compilador, se realiza la llamada a dicho constructor. Si se ejecuta con el Runtime de 1.5, todo funciona bien. Pero al ejecutar este código con el Runtime de 1.4, no se encuentra el constructor Big Decimal(int), y cuelga como ya vemos.&lt;br /&gt;
&lt;br /&gt;
====Solución====&lt;br /&gt;
Invocar al constructor del BigDecimal con un String. O asegurarse que la ejecución se hará sobre un JSE 1.5&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Cómo mostrar un BigDecimal según la localización]]&lt;br /&gt;
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Subversion&amp;diff=4504</id>
		<title>Subversion</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Subversion&amp;diff=4504"/>
				<updated>2010-01-21T19:00:30Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El objetivo del proyecto [[Subversion]] es construir un sistema de [[Control De Versiones]] que sería la sustitución de [[CVS]] en la comunidad de [[Software Libre]].&lt;br /&gt;
&lt;br /&gt;
Es [[Software Libre]] bajo una licencia de tipo Apache/BSD y se le conoce también como '''SVN''' por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de [[Subversion]] es que, a diferencia de [[CVS]], los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.&lt;br /&gt;
&lt;br /&gt;
===Ventajas frente al CVS===&lt;br /&gt;
* Se sigue la historia de los archivos y directorios a través de copias y renombrados.&lt;br /&gt;
* Las modificaciones (incluyendo cambios a varios archivos) son atómicas.&lt;br /&gt;
* La creación de ramas y etiquetas es una operación más eficiente (tiene costo de complejidad constante y no lineal como en CVS).&lt;br /&gt;
* Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).&lt;br /&gt;
* Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion en forma transparente.&lt;br /&gt;
* Maneja eficientemente archivos binarios (a diferencia de CVS que los trata internamente como si fueran de texto).&lt;br /&gt;
* Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse fácilmente, conviene que no sean editados por más de una persona a la vez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Branch Tag Con Subversion]]&lt;br /&gt;
* [[Como volver a una versión anterior con Tortoise SVN]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
*[http://svnbook.red-bean.com/en/1.0/index.html Control de versiones con Subversion]&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Subversion Subversion en la wikipedia]&lt;br /&gt;
*[http://tortoisesvn.net/ TortoiseSVN cliente Windows integrado al Explorer]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_version_anterior_con_Tortoise_SVN&amp;diff=4503</id>
		<title>Como volver a una version anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_version_anterior_con_Tortoise_SVN&amp;diff=4503"/>
				<updated>2010-01-21T18:59:50Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Como volver a una version anterior con Tortoise SVN trasladada a Como volver a una versión anterior con Tortoise SVN:&amp;amp;#32;error ortográfico&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECCIÓN [[Como volver a una versión anterior con Tortoise SVN]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4502</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4502"/>
				<updated>2010-01-21T18:59:50Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Como volver a una version anterior con Tortoise SVN trasladada a Como volver a una versión anterior con Tortoise SVN:&amp;amp;#32;error ortográfico&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [http://tortoisesvn.net/ TortoiseSVN] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
# Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
# En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
# Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
# Aparecen todas las revisiones del proyecto&lt;br /&gt;
# Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;. &lt;br /&gt;
# hasta acá localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual: Click derecho -&amp;gt; SVN Commit&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Subversion]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4501</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4501"/>
				<updated>2010-01-21T18:13:33Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [http://tortoisesvn.net/ TortoiseSVN] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
# Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
# En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
# Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
# Aparecen todas las revisiones del proyecto&lt;br /&gt;
# Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;. &lt;br /&gt;
# hasta acá localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual: Click derecho -&amp;gt; SVN Commit&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Subversion]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4500</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4500"/>
				<updated>2010-01-21T18:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [http://tortoisesvn.net/ TortoiseSVN] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
# Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
# En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
# Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
# Aparecen todas las revisiones del proyecto&lt;br /&gt;
# Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;. &lt;br /&gt;
# hasta acá localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual: Click derecho -&amp;gt; SVN Commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Subversion]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4499</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4499"/>
				<updated>2010-01-21T18:11:42Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [[http://tortoisesvn.net/ TortoiseSVN]] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
# Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
# En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
# Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
# Aparecen todas las revisiones del proyecto&lt;br /&gt;
# Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;. &lt;br /&gt;
# hasta acá localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual: Click derecho -&amp;gt; SVN Commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Subversion]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4498</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4498"/>
				<updated>2010-01-21T18:09:37Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [[http://tortoisesvn.net/ TortoiseSVN]] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
# Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
# En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
# Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
# Aparecen todas las revisiones del proyecto&lt;br /&gt;
# Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Esto hace que localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Subversion]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4497</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4497"/>
				<updated>2010-01-21T18:06:33Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [[http://tortoisesvn.net/ TortoiseSVN]] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
* En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
* Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
* Aparecen todas las revisiones del proyecto&lt;br /&gt;
* Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Esto hace que localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Subversion]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4496</id>
		<title>Como volver a una versión anterior con Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Como_volver_a_una_versi%C3%B3n_anterior_con_Tortoise_SVN&amp;diff=4496"/>
				<updated>2010-01-21T18:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Página creada con 'A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk. Para volver a una revisión anterior usando la herramienta [[http://tortoises…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A veces es necesario deshacer los cambios hechos en una rama del repositorio, por ejemplo el trunk.&lt;br /&gt;
Para volver a una revisión anterior usando la herramienta [[http://tortoisesvn.net/ TortoiseSVN]] se debe hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* Descargar la última versión de los archivos subidos al repositorio.&lt;br /&gt;
* En la carpeta descargada, click derecho para que aparezca el menú contextual del Explorer de Windows.&lt;br /&gt;
* Tortoise SVN -&amp;gt; Show Log&lt;br /&gt;
* Aparecen todas las revisiones del proyecto&lt;br /&gt;
* Seleccionar la revision a la que se quiere volver y luego click derecho -&amp;gt; &amp;quot;Revert to this Revision&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Esto hace que localmente tengamos la revisión elegida, solo quedaría commitear los cambios para que la antigua revisión reemplace la actual.&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Tortoise_SVN&amp;diff=4495</id>
		<title>Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Tortoise_SVN&amp;diff=4495"/>
				<updated>2010-01-21T17:51:33Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Blanqueada la página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Subversion&amp;diff=4494</id>
		<title>Subversion</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Subversion&amp;diff=4494"/>
				<updated>2010-01-21T17:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El objetivo del proyecto [[Subversion]] es construir un sistema de [[Control De Versiones]] que sería la sustitución de [[CVS]] en la comunidad de [[Software Libre]].&lt;br /&gt;
&lt;br /&gt;
Es [[Software Libre]] bajo una licencia de tipo Apache/BSD y se le conoce también como '''SVN''' por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de [[Subversion]] es que, a diferencia de [[CVS]], los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.&lt;br /&gt;
&lt;br /&gt;
===Ventajas frente al CVS===&lt;br /&gt;
* Se sigue la historia de los archivos y directorios a través de copias y renombrados.&lt;br /&gt;
* Las modificaciones (incluyendo cambios a varios archivos) son atómicas.&lt;br /&gt;
* La creación de ramas y etiquetas es una operación más eficiente (tiene costo de complejidad constante y no lineal como en CVS).&lt;br /&gt;
* Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).&lt;br /&gt;
* Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion en forma transparente.&lt;br /&gt;
* Maneja eficientemente archivos binarios (a diferencia de CVS que los trata internamente como si fueran de texto).&lt;br /&gt;
* Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse fácilmente, conviene que no sean editados por más de una persona a la vez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Branch Tag Con Subversion]]&lt;br /&gt;
* [[Como volver a una version anterior con Tortoise SVN]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
*[http://svnbook.red-bean.com/en/1.0/index.html Control de versiones con Subversion]&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Subversion Subversion en la wikipedia]&lt;br /&gt;
*[http://tortoisesvn.net/ TortoiseSVN cliente Windows integrado al Explorer]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Tortoise_SVN&amp;diff=4493</id>
		<title>Tortoise SVN</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Tortoise_SVN&amp;diff=4493"/>
				<updated>2010-01-21T17:49:29Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Página creada con 'Tortoise SVN es una herramienta de código libre para Windows trabajar con repositorios SVN. La página principal es http://tortoisesvn.tigris.org/  Permite: *Descargar proyecto…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tortoise SVN es una herramienta de código libre para Windows trabajar con repositorios SVN. La página principal es http://tortoisesvn.tigris.org/&lt;br /&gt;
&lt;br /&gt;
Permite:&lt;br /&gt;
*Descargar proyectos de un repositorio SVN y subir cambios.&lt;br /&gt;
*Administrar Tags y revisiones.&lt;br /&gt;
*Comparar versiones.&lt;br /&gt;
*Etc.&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Subversion&amp;diff=4492</id>
		<title>Subversion</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Subversion&amp;diff=4492"/>
				<updated>2010-01-21T17:44:25Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El objetivo del proyecto [[Subversion]] es construir un sistema de [[Control De Versiones]] que sería la sustitución de [[CVS]] en la comunidad de [[Software Libre]].&lt;br /&gt;
&lt;br /&gt;
Es [[Software Libre]] bajo una licencia de tipo Apache/BSD y se le conoce también como '''SVN''' por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de [[Subversion]] es que, a diferencia de [[CVS]], los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.&lt;br /&gt;
&lt;br /&gt;
===Ventajas frente al CVS===&lt;br /&gt;
* Se sigue la historia de los archivos y directorios a través de copias y renombrados.&lt;br /&gt;
* Las modificaciones (incluyendo cambios a varios archivos) son atómicas.&lt;br /&gt;
* La creación de ramas y etiquetas es una operación más eficiente (tiene costo de complejidad constante y no lineal como en CVS).&lt;br /&gt;
* Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).&lt;br /&gt;
* Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion en forma transparente.&lt;br /&gt;
* Maneja eficientemente archivos binarios (a diferencia de CVS que los trata internamente como si fueran de texto).&lt;br /&gt;
* Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse fácilmente, conviene que no sean editados por más de una persona a la vez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Branch Tag Con Subversion]]&lt;br /&gt;
* [[Tortoise SVN]]&lt;br /&gt;
*[http://subversion.tigris.org/ Web oficial de Subversion]&lt;br /&gt;
*[http://svnbook.red-bean.com/en/1.0/index.html Control de versiones con Subversion]&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Subversion Subversion en la wikipedia]&lt;br /&gt;
*[http://tortoisesvn.net/ TortoiseSVN cliente Windows integrado al Explorer]&lt;br /&gt;
&lt;br /&gt;
[[Category: Control De Versiones]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Consultas_Con_HibernateTemplate&amp;diff=2652</id>
		<title>Consultas Con HibernateTemplate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Consultas_Con_HibernateTemplate&amp;diff=2652"/>
				<updated>2009-04-20T13:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En [[Spring Framework]], Los DAO que heredan de ''HibernateDaoSupport'' tienen acceso al método ''getHibernateTemplate'', el cual devuelve una clase con diversas utilidades para manejar objetos con Hibernate.&lt;br /&gt;
&lt;br /&gt;
===Buscar un objeto por ID===&lt;br /&gt;
&lt;br /&gt;
Si necesitamos buscar un objeto por su ID, tenemos básicamente dos opciones: usar el método ''get()'' o el método &lt;br /&gt;
''load()'' de la Session de Hibernate.&lt;br /&gt;
&lt;br /&gt;
''get()'' busca una entidad por su PK, y devuelve null si no la encuentra. Por otro lado, ''load()'' realiza la misma operación, pero tira una DataAccessException si no se encuentra. En general, debe usarse ''load()'' cuando no se espera que la entidad no se encuentre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Invasor buscarInvasorPorId(Long id) {&lt;br /&gt;
     return getHibernateTemplate().get(Invasor.class, id);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones con Criteria===&lt;br /&gt;
&lt;br /&gt;
Existen dos formas básicas de realizar estas consultas: utilizando Criteria, o escribiendo la consulta en HQL.&lt;br /&gt;
&lt;br /&gt;
Generalmente, utilizar Criteria es más simple y facil de programar, y suele ser una buena elección cuando en la consulta se realiza sobre el objeto mapeado (y las relaciones que tenga explicitamente mapeadas). En otros casos, el query en HQL puede ser más conveniente.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que un Invasor tenga un Estado (relación muchos-a-uno desde el Invasor al Estado), se puede referenciar directamente al Estado de un Invasor (como si fuera un atributo más... que de hecho, lo es!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;estado.id&amp;quot;, idEstado));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La clase Restrictions tiene varios operadores útiles, como ser LIKE case-unsensitive. Además, se pueden establecer criterios de ordenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstadoNombre(Long idEstado, String nombre) {&lt;br /&gt;
&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;estado.id&amp;quot;, idEstado));&lt;br /&gt;
     criteria.add(Restrictions.ilike(&amp;quot;nombre&amp;quot;, nombre));&lt;br /&gt;
     criteria.addOrder(Order.desc(&amp;quot;fechaEnrolamiento&amp;quot;));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones con HQL===&lt;br /&gt;
&lt;br /&gt;
En ciertas circunstancias, puede ser preferible usar HQL. HibernateTemplate también provee algunos métodos útiles para esto. Supongamos el mismo método ''buscarInvasoresPorEstado()'', esta vez resuelto con HQL.&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 private final String QUERY = &amp;quot;from Invasor invasor where invasor.estado.id = ?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
     return getHibernateTemplate().find(QUERY, idEstado);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra alternativa es utilizar el método ''iterate()'' que devuelve un iterador para recorrer los resultados.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 private final String QUERY = &amp;quot;from Invasor invasor where invasor.estado.id = ?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 public Iterator&amp;lt;Invasor&amp;gt; buscarIteradorDeInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
        HibernateTemplate ht = getHibernateTemplate();&lt;br /&gt;
        ht.setFetchSize(15);&lt;br /&gt;
        Iterator it = ht.iterate(QUERY, idEstado);&lt;br /&gt;
        return it;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Importante: Notar que con esta alternativa, se modifica el fetch size del template de hibernate incluso para las siguientes utilizaciones del dao. Para utilizar el default, debería volver a setearse en 0.&lt;br /&gt;
&lt;br /&gt;
Un análisis de estas alternativas se puede ver en [[Eficiencia Ejecutando Querys Con Hibernate]]&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones por muestra===&lt;br /&gt;
A veces puede ser útil realizar una búsqueda por &amp;quot;muestra&amp;quot;. En estas búsquedas, se crea un objeto mapeado seteando los valores que queremos ubicar, y este mismo objeto es usado como filtro para crear la consulta. En este tipo de búsquedas no se tiene en cuenta el ID del objeto de muestra (es decir, aunque el objeto de muestra tenga seteado su PK, no será utilizada para la búsqueda).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorFechaEnrolamiento(Date fechaEnrolamiento) {&lt;br /&gt;
     Invasor invasor = new Invasor();&lt;br /&gt;
     invasor.setFechaEnrolamiento(fechaEnrolamiento);&lt;br /&gt;
     return getHibernateTemplate().findByExample(invasor);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar un sólo objeto con consultas===&lt;br /&gt;
&lt;br /&gt;
Los métodos find (de Criteria o HQL) siempre devuelve colecciones de objetos. Pero, ¿qué pasa si sabemos que nuestro query sólo puede devolver una instancia? Para esto, podemos usar la clase ''DataAccessUtils'' de Spring.&lt;br /&gt;
&lt;br /&gt;
Como todos saben, cada comandante de la flota Irken sólo puede liderar una nave espacial (son petisos los Irken, no les daría para ir paseando por diversas naves...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public NaveEspacial buscarNaveEspacialPorComandante(Long idInvasor) {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(NaveEspecial.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;idInvasorComandate&amp;quot;, idInvasor));&lt;br /&gt;
     return (NaveEspacial) DataAccessUtils.uniqueResult(getHibernateTemplate().findByCriteria(criteria));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El método ''DataAccessUtils.uniqueResult()'' lanzará una excepción si la consulta devuelve más de un resultado.&lt;br /&gt;
&lt;br /&gt;
===Paginar resultados===&lt;br /&gt;
&lt;br /&gt;
Los métodos de búsqueda tienen una forma simple para paginar resultados. El método ''findByCriteria(criteria, desde, cantidad)'' permite obtener un set reducido de datos.&lt;br /&gt;
&lt;br /&gt;
El siguiente método devuelve el &amp;quot;Top ten&amp;quot; de los mejores Invasores de la flota.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarMejoresInvasores() {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.addOrder(Order.desc(&amp;quot;cantPlanetasConquistados&amp;quot;));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria,0,10);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Consultas_Con_HibernateTemplate&amp;diff=2637</id>
		<title>Consultas Con HibernateTemplate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Consultas_Con_HibernateTemplate&amp;diff=2637"/>
				<updated>2009-04-16T15:19:41Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Buscar colecciones con HQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En [[Spring Framework]], Los DAO que heredan de ''HibernateDaoSupport'' tienen acceso al método ''getHibernateTemplate'', el cual devuelve una clase con diversas utilidades para manejar objetos con Hibernate.&lt;br /&gt;
&lt;br /&gt;
===Buscar un objeto por ID===&lt;br /&gt;
&lt;br /&gt;
Si necesitamos buscar un objeto por su ID, tenemos básicamente dos opciones: usar el método ''get()'' o el método &lt;br /&gt;
''load()'' de la Session de Hibernate.&lt;br /&gt;
&lt;br /&gt;
''get()'' busca una entidad por su PK, y devuelve null si no la encuentra. Por otro lado, ''load()'' realiza la misma operación, pero tira una DataAccessException si no se encuentra. En general, debe usarse ''load()'' cuando no se espera que la entidad no se encuentre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Invasor buscarInvasorPorId(Long id) {&lt;br /&gt;
     return getHibernateTemplate().get(Invasor.class, id);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones con Criteria===&lt;br /&gt;
&lt;br /&gt;
Existen dos formas básicas de realizar estas consultas: utilizando Criteria, o escribiendo la consulta en HQL.&lt;br /&gt;
&lt;br /&gt;
Generalmente, utilizar Criteria es más simple y facil de programar, y suele ser una buena elección cuando en la consulta se realiza sobre el objeto mapeado (y las relaciones que tenga explicitamente mapeadas). En otros casos, el query en HQL puede ser más conveniente.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que un Invasor tenga un Estado (relación muchos-a-uno desde el Invasor al Estado), se puede referenciar directamente al Estado de un Invasor (como si fuera un atributo más... que de hecho, lo es!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;estado.id&amp;quot;, idEstado));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La clase Restrictions tiene varios operadores útiles, como ser LIKE case-unsensitive. Además, se pueden establecer criterios de ordenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstadoNombre(Long idEstado, String nombre) {&lt;br /&gt;
&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;estado.id&amp;quot;, idEstado));&lt;br /&gt;
     criteria.add(Restrictions.ilike(&amp;quot;nombre&amp;quot;, nombre));&lt;br /&gt;
     criteria.addOrder(Order.desc(&amp;quot;fechaEnrolamiento&amp;quot;));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones con HQL===&lt;br /&gt;
&lt;br /&gt;
En ciertas circunstancias, puede ser preferible usar HQL. HibernateTemplate también provee algunos métodos útiles para esto. Supongamos el mismo método ''buscarInvasoresPorEstado()'', esta vez resuelto con HQL.&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 private final String QUERY = &amp;quot;from Invasor invasor where invasor.estado.id = ?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
     return getHibernateTemplate().find(QUERY, idEstado);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra alternativa es utilizar el método ''iterate()'' que devuelve un iterador para recorrer los resultados.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 private final String QUERY = &amp;quot;from Invasor invasor where invasor.estado.id = ?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 public Iterator&amp;lt;Invasor&amp;gt; buscarIteradorDeInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
        HibernateTemplate ht = getHibernateTemplate();&lt;br /&gt;
        ht.setFetchSize(15);&lt;br /&gt;
        Iterator it = ht.iterate(QUERY, idEstado);&lt;br /&gt;
        return it;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un análisis de estas alternativas se puede ver en [[Eficiencia ejecutando Querys Con Hibernate]]&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones por muestra===&lt;br /&gt;
A veces puede ser útil realizar una búsqueda por &amp;quot;muestra&amp;quot;. En estas búsquedas, se crea un objeto mapeado seteando los valores que queremos ubicar, y este mismo objeto es usado como filtro para crear la consulta. En este tipo de búsquedas no se tiene en cuenta el ID del objeto de muestra (es decir, aunque el objeto de muestra tenga seteado su PK, no será utilizada para la búsqueda).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorFechaEnrolamiento(Date fechaEnrolamiento) {&lt;br /&gt;
     Invasor invasor = new Invasor();&lt;br /&gt;
     invasor.setFechaEnrolamiento(fechaEnrolamiento);&lt;br /&gt;
     return getHibernateTemplate().findByExample(invasor);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar un sólo objeto con consultas===&lt;br /&gt;
&lt;br /&gt;
Los métodos find (de Criteria o HQL) siempre devuelve colecciones de objetos. Pero, ¿qué pasa si sabemos que nuestro query sólo puede devolver una instancia? Para esto, podemos usar la clase ''DataAccessUtils'' de Spring.&lt;br /&gt;
&lt;br /&gt;
Como todos saben, cada comandante de la flota Irken sólo puede liderar una nave espacial (son petisos los Irken, no les daría para ir paseando por diversas naves...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public NaveEspacial buscarNaveEspacialPorComandante(Long idInvasor) {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(NaveEspecial.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;idInvasorComandate&amp;quot;, idInvasor));&lt;br /&gt;
     return (NaveEspacial) DataAccessUtils.uniqueResult(getHibernateTemplate().findByCriteria(criteria));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El método ''DataAccessUtils.uniqueResult()'' lanzará una excepción si la consulta devuelve más de un resultado.&lt;br /&gt;
&lt;br /&gt;
===Paginar resultados===&lt;br /&gt;
&lt;br /&gt;
Los métodos de búsqueda tienen una forma simple para paginar resultados. El método ''findByCriteria(criteria, desde, cantidad)'' permite obtener un set reducido de datos.&lt;br /&gt;
&lt;br /&gt;
El siguiente método devuelve el &amp;quot;Top ten&amp;quot; de los mejores Invasores de la flota.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarMejoresInvasores() {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.addOrder(Order.desc(&amp;quot;cantPlanetasConquistados&amp;quot;));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria,0,10);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Consultas_Con_HibernateTemplate&amp;diff=2636</id>
		<title>Consultas Con HibernateTemplate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Consultas_Con_HibernateTemplate&amp;diff=2636"/>
				<updated>2009-04-16T15:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Buscar colecciones con HQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En [[Spring Framework]], Los DAO que heredan de ''HibernateDaoSupport'' tienen acceso al método ''getHibernateTemplate'', el cual devuelve una clase con diversas utilidades para manejar objetos con Hibernate.&lt;br /&gt;
&lt;br /&gt;
===Buscar un objeto por ID===&lt;br /&gt;
&lt;br /&gt;
Si necesitamos buscar un objeto por su ID, tenemos básicamente dos opciones: usar el método ''get()'' o el método &lt;br /&gt;
''load()'' de la Session de Hibernate.&lt;br /&gt;
&lt;br /&gt;
''get()'' busca una entidad por su PK, y devuelve null si no la encuentra. Por otro lado, ''load()'' realiza la misma operación, pero tira una DataAccessException si no se encuentra. En general, debe usarse ''load()'' cuando no se espera que la entidad no se encuentre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Invasor buscarInvasorPorId(Long id) {&lt;br /&gt;
     return getHibernateTemplate().get(Invasor.class, id);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones con Criteria===&lt;br /&gt;
&lt;br /&gt;
Existen dos formas básicas de realizar estas consultas: utilizando Criteria, o escribiendo la consulta en HQL.&lt;br /&gt;
&lt;br /&gt;
Generalmente, utilizar Criteria es más simple y facil de programar, y suele ser una buena elección cuando en la consulta se realiza sobre el objeto mapeado (y las relaciones que tenga explicitamente mapeadas). En otros casos, el query en HQL puede ser más conveniente.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que un Invasor tenga un Estado (relación muchos-a-uno desde el Invasor al Estado), se puede referenciar directamente al Estado de un Invasor (como si fuera un atributo más... que de hecho, lo es!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;estado.id&amp;quot;, idEstado));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La clase Restrictions tiene varios operadores útiles, como ser LIKE case-unsensitive. Además, se pueden establecer criterios de ordenamiento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstadoNombre(Long idEstado, String nombre) {&lt;br /&gt;
&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;estado.id&amp;quot;, idEstado));&lt;br /&gt;
     criteria.add(Restrictions.ilike(&amp;quot;nombre&amp;quot;, nombre));&lt;br /&gt;
     criteria.addOrder(Order.desc(&amp;quot;fechaEnrolamiento&amp;quot;));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones con HQL===&lt;br /&gt;
&lt;br /&gt;
En ciertas circunstancias, puede ser preferible usar HQL. HibernateTemplate también provee algunos métodos útiles para esto. Supongamos el mismo método ''buscarInvasoresPorEstado()'', esta vez resuelto con HQL.&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 private final String QUERY = &amp;quot;from Invasor invasor where invasor.estado.id = ?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
     return getHibernateTemplate().find(QUERY, idEstado);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra alternativa es utilizar el método ''iterate()'' que devuelve un iterador para recorrer los resultados.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 private final String QUERY = &amp;quot;from Invasor invasor where invasor.estado.id = ?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 public Iterator&amp;lt;Invasor&amp;gt; buscarIteratorDeInvasoresPorEstado(Long idEstado) {&lt;br /&gt;
        HibernateTemplate ht = getHibernateTemplate();&lt;br /&gt;
        ht.setFetchSize(15);&lt;br /&gt;
        Iterator it = ht.iterate(QUERY, idEstado);&lt;br /&gt;
        return it;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un análisis de estas alternativas se puede ver en [[Eficiencia ejecutando Querys Con Hibernate]]&lt;br /&gt;
&lt;br /&gt;
===Buscar colecciones por muestra===&lt;br /&gt;
A veces puede ser útil realizar una búsqueda por &amp;quot;muestra&amp;quot;. En estas búsquedas, se crea un objeto mapeado seteando los valores que queremos ubicar, y este mismo objeto es usado como filtro para crear la consulta. En este tipo de búsquedas no se tiene en cuenta el ID del objeto de muestra (es decir, aunque el objeto de muestra tenga seteado su PK, no será utilizada para la búsqueda).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarInvasoresPorFechaEnrolamiento(Date fechaEnrolamiento) {&lt;br /&gt;
     Invasor invasor = new Invasor();&lt;br /&gt;
     invasor.setFechaEnrolamiento(fechaEnrolamiento);&lt;br /&gt;
     return getHibernateTemplate().findByExample(invasor);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buscar un sólo objeto con consultas===&lt;br /&gt;
&lt;br /&gt;
Los métodos find (de Criteria o HQL) siempre devuelve colecciones de objetos. Pero, ¿qué pasa si sabemos que nuestro query sólo puede devolver una instancia? Para esto, podemos usar la clase ''DataAccessUtils'' de Spring.&lt;br /&gt;
&lt;br /&gt;
Como todos saben, cada comandante de la flota Irken sólo puede liderar una nave espacial (son petisos los Irken, no les daría para ir paseando por diversas naves...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public NaveEspacial buscarNaveEspacialPorComandante(Long idInvasor) {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(NaveEspecial.class);&lt;br /&gt;
     criteria.add(Restrictions.eq(&amp;quot;idInvasorComandate&amp;quot;, idInvasor));&lt;br /&gt;
     return (NaveEspacial) DataAccessUtils.uniqueResult(getHibernateTemplate().findByCriteria(criteria));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El método ''DataAccessUtils.uniqueResult()'' lanzará una excepción si la consulta devuelve más de un resultado.&lt;br /&gt;
&lt;br /&gt;
===Paginar resultados===&lt;br /&gt;
&lt;br /&gt;
Los métodos de búsqueda tienen una forma simple para paginar resultados. El método ''findByCriteria(criteria, desde, cantidad)'' permite obtener un set reducido de datos.&lt;br /&gt;
&lt;br /&gt;
El siguiente método devuelve el &amp;quot;Top ten&amp;quot; de los mejores Invasores de la flota.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public Collection&amp;lt;Invasor&amp;gt; buscarMejoresInvasores() {&lt;br /&gt;
     DetachedCriteria criteria = DetachedCriteria.forClass(Invasor.class);&lt;br /&gt;
     criteria.addOrder(Order.desc(&amp;quot;cantPlanetasConquistados&amp;quot;));&lt;br /&gt;
     return getHibernateTemplate().findByCriteria(criteria,0,10);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2635</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2635"/>
				<updated>2009-04-16T15:06:06Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hibernate Query==&lt;br /&gt;
&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html org.hibernate.Query] que provee 3 metodos para obtener los resultados de un Query: ''list()'', ''iterate()'' y ''scroll()''. &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
===Query.list()===&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Query.iterate()===&lt;br /&gt;
&lt;br /&gt;
El método ''Query.iterate()'' devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método ''Iterator.next()'' que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método ''Iterator.next()'' ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo ''Iterator.next()'', se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método ''Query.setFetchSize()'' antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusión==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método ''Query.list()'' cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método ''Query.iterate()'' se ajusta mejor ya que permite limitar (con ''Query.setFetchSize()'' ) la cantidad de resultados que se tienen en memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver También==&lt;br /&gt;
&lt;br /&gt;
*[http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying]&lt;br /&gt;
*[http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java]&lt;br /&gt;
*[http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet]&lt;br /&gt;
*[[Consultas Con HibernateTemplate]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2634</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2634"/>
				<updated>2009-04-16T15:04:00Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hibernate Query==&lt;br /&gt;
&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html org.hibernate.Query] que provee 3 metodos para obtener los resultados de un Query: list(), iterate() y scroll(). &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
===Query.list()===&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Query.iterate()===&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusión==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver También==&lt;br /&gt;
&lt;br /&gt;
*[http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying]&lt;br /&gt;
*[http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java]&lt;br /&gt;
*[http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet]&lt;br /&gt;
*[[Consultas Con HibernateTemplate]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2633</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2633"/>
				<updated>2009-04-16T15:01:04Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver También */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hibernate Query==&lt;br /&gt;
&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html org.hibernate.Query] que provee 3 metodos para obtener los resultados de un Query: list(), iterate() y scroll(). &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
===Query.list()===&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Query.iterate()===&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusión==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver También==&lt;br /&gt;
&lt;br /&gt;
*[http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying]&lt;br /&gt;
*[http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java]&lt;br /&gt;
*[http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet]&lt;br /&gt;
*[[Consultas Con HibernateTemplate]]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2632</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2632"/>
				<updated>2009-04-16T14:58:16Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver También */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hibernate Query==&lt;br /&gt;
&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html org.hibernate.Query] que provee 3 metodos para obtener los resultados de un Query: list(), iterate() y scroll(). &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
===Query.list()===&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Query.iterate()===&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusión==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver También==&lt;br /&gt;
&lt;br /&gt;
*[http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying]&lt;br /&gt;
*[http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/orm/hibernate/HibernateTemplate.html Querys con Spring HibernateTemplate]&lt;br /&gt;
*[http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java]&lt;br /&gt;
*[http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2631</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2631"/>
				<updated>2009-04-16T14:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hibernate Query==&lt;br /&gt;
&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html org.hibernate.Query] que provee 3 metodos para obtener los resultados de un Query: list(), iterate() y scroll(). &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
===Query.list()===&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Query.iterate()===&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusión==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver También==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying]&lt;br /&gt;
[http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/orm/hibernate/HibernateTemplate.html Querys con Spring HibernateTemplate]&lt;br /&gt;
[http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java]&lt;br /&gt;
[http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2630</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2630"/>
				<updated>2009-04-16T14:51:14Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Hibernate Query==&lt;br /&gt;
&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente org.hibernate.Query que provee 3 metodos para obtener los resultados de un Query: list(), iterate() y scroll(). &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
===Query.list()===&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Query.iterate()===&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusión==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver También==&lt;br /&gt;
&lt;br /&gt;
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html Hibernate Query Interface&lt;br /&gt;
http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying&lt;br /&gt;
http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/orm/hibernate/HibernateTemplate.html Querys con Spring HibernateTemplate&lt;br /&gt;
http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java&lt;br /&gt;
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2629</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2629"/>
				<updated>2009-04-16T14:46:52Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz que se utiliza para la ejecución de queries es precisamente org.hibernate.Query que provee 3 metodos para obtener los resultados de un Query: list(), iterate() y scroll(). &lt;br /&gt;
&lt;br /&gt;
Se analizarán los dos primeros en cuanto a eficiencia y conveniencia de uso.&lt;br /&gt;
&lt;br /&gt;
== Query.list() ==&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query.iterate() ==&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusión ==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vea También ==&lt;br /&gt;
&lt;br /&gt;
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html Hibernate Query Interface&lt;br /&gt;
http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying&lt;br /&gt;
http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/orm/hibernate/HibernateTemplate.html Querys con Spring HibernateTemplate&lt;br /&gt;
http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java&lt;br /&gt;
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2628</id>
		<title>Eficiencia Ejecutando Querys Con Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Eficiencia_Ejecutando_Querys_Con_Hibernate&amp;diff=2628"/>
				<updated>2009-04-16T14:45:17Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: Página creada con ' Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz   que se utiliza para la ejecución de queries es pr...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Hibernate provee varias formas de ejecutar un mismo Query HQL, devolviendo los resultados de distintas maneras. La interfaz &lt;br /&gt;
&lt;br /&gt;
que se utiliza para la ejecución de queries es precisamente org.hibernate.Query que provee 3 metodos para obtener los &lt;br /&gt;
&lt;br /&gt;
resultados de un Query: list(), iterate() y scroll(). Se analizarán los dos primeros en cuanto a eficiencia en nuestras &lt;br /&gt;
&lt;br /&gt;
aplicaciones.&lt;br /&gt;
&lt;br /&gt;
== Query.list() ==&lt;br /&gt;
&lt;br /&gt;
El método Query.list() devuelve en una colección todos los resultados del Query. Es decir, en la colección se encuentran &lt;br /&gt;
&lt;br /&gt;
instanciadas todas las entidades que corresponden al resultado de la ejecución del HQL, por lo tanto el ResultSet subyacente &lt;br /&gt;
&lt;br /&gt;
de la conexión JDBC se cierra ya que no se necesita más. &lt;br /&gt;
&lt;br /&gt;
Notar que esta alternativa realiza una única comunicación con la base de datos en donde se traen todos los resultados y requiere que haya memoria suficiente para almacenar todos los objetos resultantes del query. Si la cantidad de resultados es extensa, el delay del acceso a la base será notorio.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
List autos = q.list();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query.iterate() ==&lt;br /&gt;
&lt;br /&gt;
El método Query.iterate() devuelve un iterador java.util.Iterator para iterar los resultados del query.&lt;br /&gt;
En este caso, las entidades se instancian &amp;quot;a demanda&amp;quot;, es decir, con cada llamada al método Iterator.next() que devolverá la &lt;br /&gt;
&lt;br /&gt;
entidad de la posición actual del iterador.&lt;br /&gt;
&lt;br /&gt;
Para resolver esto, Hibernate ejecuta el query obteniendo sólo los ids de las entidades, y en cada llamada al método next() &lt;br /&gt;
&lt;br /&gt;
ejecuta la consulta propia para obtener la entidad completa. Esto se traduce en una mayor cantidad de accesos a la base de &lt;br /&gt;
&lt;br /&gt;
datos, resultando en un mayor tiempo de procesamiento total. La ventaja de este método es que no se requiere que todas las &lt;br /&gt;
&lt;br /&gt;
entidades estén cargadas en memoria simultáneamente, consumiendo memoria innecesariamente.&lt;br /&gt;
&lt;br /&gt;
Para optimizar la obtención de entidades haciendo que no se realice un acceso a la base por cada  llamada al metodo &lt;br /&gt;
&lt;br /&gt;
Iterator.next(), se puede fijar la cantidad de resultados a traer en cada acceso o &amp;quot;fetch&amp;quot;. Esto se configura llamando al &lt;br /&gt;
&lt;br /&gt;
método Query.setFetchSize() antes de la ejecución de la consulta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Query q = session.createQuery(&amp;quot;from Auto auto where auto.aniocreacion &amp;lt; 1985 &amp;quot;);&lt;br /&gt;
q.setFetchSize(10); 		    // se obtendrán 10 resultados en cada acceso a la base.&lt;br /&gt;
Iterator iter = q.iterate();&lt;br /&gt;
while ( iter.hasNext() ) {&lt;br /&gt;
    Auto auto = (Auto) iter.next();  // fetch the object&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debe tenerse particular cuidado en que no se cierre la sesión de hibernate mientras se utiliza el iterador, de lo contrario &lt;br /&gt;
&lt;br /&gt;
no se podrán obtener los resultados subsiguientes de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusión ==&lt;br /&gt;
&lt;br /&gt;
Para los casos en que se deban tener acceso simultáneo a todas las entidades resultantes de un Query, el método Query.list() &lt;br /&gt;
&lt;br /&gt;
cumplirá con los requisitos, teniendo en cuenta que todos los resultados esperados ocuparán espacio en memoria. &lt;br /&gt;
&lt;br /&gt;
Si lo que se necesita es realizar una operación con cada entidad y luego esa entidad no se utilizará más, el método &lt;br /&gt;
&lt;br /&gt;
Query.iterate() se ajusta mejor ya que permite limitar (con Query.setFetchSize() ) la cantidad de resultados que se tienen en &lt;br /&gt;
&lt;br /&gt;
memoria y no consumir recursos innecesariamente, haciendo que la aplicación sea más eficiente y menos propensa a fallos por &lt;br /&gt;
&lt;br /&gt;
falta de memoria en casos potenciales de muchos resultados en un query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vea También ==&lt;br /&gt;
&lt;br /&gt;
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html Hibernate Query Interface&lt;br /&gt;
http://www.hibernate.org/hib_docs/reference/en/html/objectstate-querying.html Hibernate Queriying&lt;br /&gt;
http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/orm/hibernate/HibernateTemplate.html Querys con Spring HibernateTemplate&lt;br /&gt;
http://articles.techrepublic.com.com/5100-10878_11-1046675.html Deciding between iterators and lists for returned values in Java&lt;br /&gt;
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html Interface java.sql.ResultSet&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Hibernate&amp;diff=2627</id>
		<title>Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Hibernate&amp;diff=2627"/>
				<updated>2009-04-16T12:53:29Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hibernate es un framework de persistencia de objetos para Java. Su función principal es la de [[Mapeo Objeto-Relacional]], es decir, mapear objetos a tablas de una base de datos relacional.&lt;br /&gt;
&lt;br /&gt;
Actualmente Hibernate cuanta con varios subproyectos que resuelven distintos aspectos del acceso y manipulación de datos.&lt;br /&gt;
&lt;br /&gt;
== Log de querys ==&lt;br /&gt;
Es posible decirle a Hibernate que realice un log de los comandos SQL que ejecuta. Esto resulta muy útil en tiempo de desarrollo. &lt;br /&gt;
&lt;br /&gt;
Para esto es necesario definir la propiedad ''show_sql'' en la configuración de Hibernate (generalmente, el archivo ''hibernate.cfg.xml''): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;show_sql&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar veremos algo como lo siguiente: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
select emails0_.PERSON_ID as PERSON1_0_, emails0_.EMAIL_ADDR as EMAIL2_0_ &lt;br /&gt;
from PERSONA emails0_ &lt;br /&gt;
where emails0_.PERSON_ID=?&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si además queremos que el log aparezca mejor formateado, agregamos la variable ''format_sql'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;format_sql&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos: &lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
select&lt;br /&gt;
    emails0_.PERSON_ID as PERSON1_0_,&lt;br /&gt;
    emails0_.EMAIL_ADDR as EMAIL2_0_&lt;br /&gt;
from&lt;br /&gt;
    PERSONA emails0_&lt;br /&gt;
where&lt;br /&gt;
    emails0_.PERSON_ID=?&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si ademas desean saber los valores de las bind variables, y variables de resultado que se utilizan en el query, deben configurar lo siguiente en el archivo ''log4j.properties'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    log4j.logger.org.hibernate.type=debug&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos: &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
12:30:56,551 DEBUG LongType:133 - binding '1' to parameter: 1&lt;br /&gt;
12:30:56,551 DEBUG LongType:172 - returning '1' as column: PERSON1_0_&lt;br /&gt;
12:30:56,567 DEBUG StringType:172 - returning 'demo@dosideas.com' as column: EMAIL2_0_&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra opción bastante interesante es ver el manejo de recursos por parte de Jdbc. Se debe agregar la propiedad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    log4j.logger.org.hibernate.jdbc=debug&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   12:30:56,551 - opening JDBC connection&lt;br /&gt;
12:30:56,553 - preparing statement&lt;br /&gt;
12:30:56,554 - about to open ResultSet (open ResultSets: 0, globally: 0)&lt;br /&gt;
12:30:57,551 - about to close ResultSet (open ResultSets: 1, globally: 1)&lt;br /&gt;
12:30:58,551 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)&lt;br /&gt;
12:30:58,552 - closing statement&lt;br /&gt;
12:30:56,553 - aggressively releasing JDBC connection&lt;br /&gt;
12:30:56,554 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) &lt;br /&gt;
(open ResultSets: 0, globally: 0)]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[Cache De Hibernate]]&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;br /&gt;
* [[Actualizacion Dinamica Con Hibernate]]&lt;br /&gt;
* [[Eficiencia ejecutando Querys Con Hibernate]]&lt;br /&gt;
* [http://www.hibernate.org/ Web oficial de Hibernate]&lt;br /&gt;
* [http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp Tutorial de Hibernate]&lt;br /&gt;
* [http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html Comparación entre Hibernate, iBatis y JPA]&lt;br /&gt;
* [http://www.dosideas.com/java/180-testeando-rapido-todos-los-mapeos-de-hibernate.html Testear todos los mapeos de Hibernate]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Hibernate&amp;diff=2626</id>
		<title>Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Hibernate&amp;diff=2626"/>
				<updated>2009-04-16T12:50:16Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hibernate es un framework de persistencia de objetos para Java. Su función principal es la de [[Mapeo Objeto-Relacional]], es decir, mapear objetos a tablas de una base de datos relacional.&lt;br /&gt;
&lt;br /&gt;
Actualmente Hibernate cuanta con varios subproyectos que resuelven distintos aspectos del acceso y manipulación de datos.&lt;br /&gt;
&lt;br /&gt;
== Log de querys ==&lt;br /&gt;
Es posible decirle a Hibernate que realice un log de los comandos SQL que ejecuta. Esto resulta muy útil en tiempo de desarrollo. &lt;br /&gt;
&lt;br /&gt;
Para esto es necesario definir la propiedad ''show_sql'' en la configuración de Hibernate (generalmente, el archivo ''hibernate.cfg.xml''): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;show_sql&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar veremos algo como lo siguiente: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
select emails0_.PERSON_ID as PERSON1_0_, emails0_.EMAIL_ADDR as EMAIL2_0_ &lt;br /&gt;
from PERSONA emails0_ &lt;br /&gt;
where emails0_.PERSON_ID=?&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si además queremos que el log aparezca mejor formateado, agregamos la variable ''format_sql'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;format_sql&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos: &lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
select&lt;br /&gt;
    emails0_.PERSON_ID as PERSON1_0_,&lt;br /&gt;
    emails0_.EMAIL_ADDR as EMAIL2_0_&lt;br /&gt;
from&lt;br /&gt;
    PERSONA emails0_&lt;br /&gt;
where&lt;br /&gt;
    emails0_.PERSON_ID=?&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si ademas desean saber los valores de las bind variables, y variables de resultado que se utilizan en el query, deben configurar lo siguiente en el archivo ''log4j.properties'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    log4j.logger.org.hibernate.type=debug&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos: &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
12:30:56,551 DEBUG LongType:133 - binding '1' to parameter: 1&lt;br /&gt;
12:30:56,551 DEBUG LongType:172 - returning '1' as column: PERSON1_0_&lt;br /&gt;
12:30:56,567 DEBUG StringType:172 - returning 'demo@dosideas.com' as column: EMAIL2_0_&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra opción bastante interesante es ver el manejo de recursos por parte de Jdbc. Se debe agregar la propiedad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    log4j.logger.org.hibernate.jdbc=debug&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   12:30:56,551 - opening JDBC connection&lt;br /&gt;
12:30:56,553 - preparing statement&lt;br /&gt;
12:30:56,554 - about to open ResultSet (open ResultSets: 0, globally: 0)&lt;br /&gt;
12:30:57,551 - about to close ResultSet (open ResultSets: 1, globally: 1)&lt;br /&gt;
12:30:58,551 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)&lt;br /&gt;
12:30:58,552 - closing statement&lt;br /&gt;
12:30:56,553 - aggressively releasing JDBC connection&lt;br /&gt;
12:30:56,554 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) &lt;br /&gt;
(open ResultSets: 0, globally: 0)]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[Cache De Hibernate]]&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;br /&gt;
* [[Actualizacion Dinamica Con Hibernate]]&lt;br /&gt;
* [[Performance en Querys Con Hibernate]]&lt;br /&gt;
* [http://www.hibernate.org/ Web oficial de Hibernate]&lt;br /&gt;
* [http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp Tutorial de Hibernate]&lt;br /&gt;
* [http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html Comparación entre Hibernate, iBatis y JPA]&lt;br /&gt;
* [http://www.dosideas.com/java/180-testeando-rapido-todos-los-mapeos-de-hibernate.html Testear todos los mapeos de Hibernate]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Hibernate&amp;diff=2625</id>
		<title>Hibernate</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Hibernate&amp;diff=2625"/>
				<updated>2009-04-15T19:33:57Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hibernate es un framework de persistencia de objetos para Java. Su función principal es la de [[Mapeo Objeto-Relacional]], es decir, mapear objetos a tablas de una base de datos relacional.&lt;br /&gt;
&lt;br /&gt;
Actualmente Hibernate cuanta con varios subproyectos que resuelven distintos aspectos del acceso y manipulación de datos.&lt;br /&gt;
&lt;br /&gt;
== Log de querys ==&lt;br /&gt;
Es posible decirle a Hibernate que realice un log de los comandos SQL que ejecuta. Esto resulta muy útil en tiempo de desarrollo. &lt;br /&gt;
&lt;br /&gt;
Para esto es necesario definir la propiedad ''show_sql'' en la configuración de Hibernate (generalmente, el archivo ''hibernate.cfg.xml''): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;show_sql&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al ejecutar veremos algo como lo siguiente: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
select emails0_.PERSON_ID as PERSON1_0_, emails0_.EMAIL_ADDR as EMAIL2_0_ &lt;br /&gt;
from PERSONA emails0_ &lt;br /&gt;
where emails0_.PERSON_ID=?&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si además queremos que el log aparezca mejor formateado, agregamos la variable ''format_sql'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;format_sql&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos: &lt;br /&gt;
&amp;lt;code sql&amp;gt;&lt;br /&gt;
select&lt;br /&gt;
    emails0_.PERSON_ID as PERSON1_0_,&lt;br /&gt;
    emails0_.EMAIL_ADDR as EMAIL2_0_&lt;br /&gt;
from&lt;br /&gt;
    PERSONA emails0_&lt;br /&gt;
where&lt;br /&gt;
    emails0_.PERSON_ID=?&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si ademas desean saber los valores de las bind variables, y variables de resultado que se utilizan en el query, deben configurar lo siguiente en el archivo ''log4j.properties'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    log4j.logger.org.hibernate.type=debug&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos: &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
12:30:56,551 DEBUG LongType:133 - binding '1' to parameter: 1&lt;br /&gt;
12:30:56,551 DEBUG LongType:172 - returning '1' as column: PERSON1_0_&lt;br /&gt;
12:30:56,567 DEBUG StringType:172 - returning 'demo@dosideas.com' as column: EMAIL2_0_&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otra opción bastante interesante es ver el manejo de recursos por parte de Jdbc. Se debe agregar la propiedad: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    log4j.logger.org.hibernate.jdbc=debug&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y veremos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   12:30:56,551 - opening JDBC connection&lt;br /&gt;
12:30:56,553 - preparing statement&lt;br /&gt;
12:30:56,554 - about to open ResultSet (open ResultSets: 0, globally: 0)&lt;br /&gt;
12:30:57,551 - about to close ResultSet (open ResultSets: 1, globally: 1)&lt;br /&gt;
12:30:58,551 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)&lt;br /&gt;
12:30:58,552 - closing statement&lt;br /&gt;
12:30:56,553 - aggressively releasing JDBC connection&lt;br /&gt;
12:30:56,554 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) &lt;br /&gt;
(open ResultSets: 0, globally: 0)]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[Cache De Hibernate]]&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;br /&gt;
* [[Actualizacion Dinamica Con Hibernate]]&lt;br /&gt;
* [[Robustez en Querys Con Hibernate]]&lt;br /&gt;
* [http://www.hibernate.org/ Web oficial de Hibernate]&lt;br /&gt;
* [http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp Tutorial de Hibernate]&lt;br /&gt;
* [http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html Comparación entre Hibernate, iBatis y JPA]&lt;br /&gt;
* [http://www.dosideas.com/java/180-testeando-rapido-todos-los-mapeos-de-hibernate.html Testear todos los mapeos de Hibernate]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=HermesJMS&amp;diff=1530</id>
		<title>HermesJMS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=HermesJMS&amp;diff=1530"/>
				<updated>2009-01-21T13:53:44Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: /* Copiando Mensajes entre distintas colas de mensajes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HermesJMS es una herramienta para administrar colas [[JMS]]. HermesJMS permite:&lt;br /&gt;
* Ver los mensajes de distintas colas&lt;br /&gt;
* Realizar búsquedas sobre los mensajes&lt;br /&gt;
* Borrar mensajes&lt;br /&gt;
* Copiar mensajes, y postearlos (incluso entre distintas colas)&lt;br /&gt;
* Postear mensajes de texto&lt;br /&gt;
* Y más! (esto significa que no la terminé de ver...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configurar HermesJMS para WebLogic 8.1==&lt;br /&gt;
&lt;br /&gt;
===Configurando el HermesJMS===&lt;br /&gt;
&lt;br /&gt;
Luego de descargar e instalar siguiendo las debidas instrucciones, acá les dejo como se configura el programa paso por paso.&lt;br /&gt;
&lt;br /&gt;
====Crear el Class Loader====&lt;br /&gt;
* Ir al menu Options &amp;gt; Configuration...&lt;br /&gt;
* Click en el tab &amp;quot;Providers&amp;quot; tab abajo&lt;br /&gt;
* Click Derecho y  &amp;quot;Add Group&amp;quot;&lt;br /&gt;
* Ingresar name &amp;quot;WebLogic 8.1&amp;quot;&lt;br /&gt;
* Click &amp;quot;+&amp;quot; a la derecha de &amp;quot;WebLogic 8.1&amp;quot; para expandir&lt;br /&gt;
* Click Derecho &amp;quot;Library&amp;quot; y seleccionar &amp;quot;Add JAR(s)&amp;quot;&lt;br /&gt;
* Examinar : BEA_HOME/WebLogic81/server/lib/ y seleccionar el &amp;quot;weblogic.jar&amp;quot;.&lt;br /&gt;
* Click &amp;quot;Don't Scan&amp;quot;.&lt;br /&gt;
* Click OK para cerrar la pantalla de Configuration.&lt;br /&gt;
&lt;br /&gt;
====Crear el Context====&lt;br /&gt;
* Click  Derecho en &amp;quot;contexts&amp;quot; en la izquierda y seleccionar: &amp;gt; New Context...&lt;br /&gt;
* Ingresar el nombre del contexto: &amp;quot;WebLogic&amp;quot;&lt;br /&gt;
* Loader: &amp;quot;WebLogic 8.1&amp;quot;&lt;br /&gt;
* ProviderURL : &amp;quot;t3://localhost:7001&amp;quot;&lt;br /&gt;
* !InitialContextFactory : &amp;quot;weblogic.jndi.WLInitialContextFactory&amp;quot;&lt;br /&gt;
* !SecurityPrincipal : &amp;quot;weblogic&amp;quot;&lt;br /&gt;
* !SecurityCredentials : &amp;quot;weblogic&amp;quot;&lt;br /&gt;
* Binding : &amp;quot;QueueConnectionFactory&amp;quot;&lt;br /&gt;
* Click OK&lt;br /&gt;
&lt;br /&gt;
====Luego en la pantalla central del Hermes====&lt;br /&gt;
* Doble click sobre context &amp;gt; Weblogic&lt;br /&gt;
* Boton derecho sobre nuestra Connection Factory (HeladeraCF)&lt;br /&gt;
* Create New Session &amp;gt; HeladeraCF&lt;br /&gt;
* Luego se agrega la cola a nuestra CF (Boton derecho sobre la cola, addTo &amp;gt; HeladeraCF&lt;br /&gt;
* Y ahora desde &amp;quot;session &amp;gt; HeladeraCF &amp;gt; &amp;quot;NuestraQueue&amp;quot; podran observar los mensajes de dicha Cola&lt;br /&gt;
&lt;br /&gt;
====Copiando Mensajes entre distintas colas de mensajes ====&lt;br /&gt;
Los mensajes se pueden copiar de una cola de mensajes a otra cola de mensajes simplemente arrastrando y soltando (drag and drop) los mensajes de una cola hacia otra.&lt;br /&gt;
Puede ser requerido por el usuario que al copiar los mensajes de una cola a otra se copien o no algunos de sus encabezados JMS. Para seleccionar qué encabezados debe mantener HermesJMS en la copia, se deben seleccionar en la configuración de la aplicación:&lt;br /&gt;
&lt;br /&gt;
* Menu Options -&amp;gt; Configuration...&lt;br /&gt;
* Seleccionar abajo el tab &amp;quot;General&amp;quot;&lt;br /&gt;
* Seleccionar las opciones &amp;quot;CopyXXX&amp;quot; donde XXX son los encabezados JMS que permite copiar.&lt;br /&gt;
&lt;br /&gt;
Entre los encabezados disponibles para copiar están:&lt;br /&gt;
&lt;br /&gt;
*JMSCorrelationID&lt;br /&gt;
*JMSExpiration&lt;br /&gt;
*JMSPriority&lt;br /&gt;
*JMSReplyTo&lt;br /&gt;
*JMSType&lt;br /&gt;
&lt;br /&gt;
====Guardando los mensajes en Archivos====&lt;br /&gt;
&lt;br /&gt;
Se pueden guardar los mensajes de una cola en un archivo local que incluye la información de encabezados JMS para posteriormente poder postearlos la cantidad de veces que sea necesario:&lt;br /&gt;
* Clic derecho en un mensaje recibido, “save..”, “save as xml” &lt;br /&gt;
* Guardar el archivo con un nombre, para luego poder obtenerlo mas tarde.&lt;br /&gt;
&lt;br /&gt;
Para postear en una cola un mensaje guardado:&lt;br /&gt;
* Clic derecho en la cola en la que se quiere postear&lt;br /&gt;
* Menú messages, send xml encoded messages (o ctrl. + T) &lt;br /&gt;
* Elegir el archivo guardado previamente.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[JMS]]&lt;br /&gt;
* [http://www.hermesjms.com Página oficial de HermesJMS]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=HermesJMS&amp;diff=1529</id>
		<title>HermesJMS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=HermesJMS&amp;diff=1529"/>
				<updated>2009-01-21T13:52:21Z</updated>
		
		<summary type="html">&lt;p&gt;Acandal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HermesJMS es una herramienta para administrar colas [[JMS]]. HermesJMS permite:&lt;br /&gt;
* Ver los mensajes de distintas colas&lt;br /&gt;
* Realizar búsquedas sobre los mensajes&lt;br /&gt;
* Borrar mensajes&lt;br /&gt;
* Copiar mensajes, y postearlos (incluso entre distintas colas)&lt;br /&gt;
* Postear mensajes de texto&lt;br /&gt;
* Y más! (esto significa que no la terminé de ver...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configurar HermesJMS para WebLogic 8.1==&lt;br /&gt;
&lt;br /&gt;
===Configurando el HermesJMS===&lt;br /&gt;
&lt;br /&gt;
Luego de descargar e instalar siguiendo las debidas instrucciones, acá les dejo como se configura el programa paso por paso.&lt;br /&gt;
&lt;br /&gt;
====Crear el Class Loader====&lt;br /&gt;
* Ir al menu Options &amp;gt; Configuration...&lt;br /&gt;
* Click en el tab &amp;quot;Providers&amp;quot; tab abajo&lt;br /&gt;
* Click Derecho y  &amp;quot;Add Group&amp;quot;&lt;br /&gt;
* Ingresar name &amp;quot;WebLogic 8.1&amp;quot;&lt;br /&gt;
* Click &amp;quot;+&amp;quot; a la derecha de &amp;quot;WebLogic 8.1&amp;quot; para expandir&lt;br /&gt;
* Click Derecho &amp;quot;Library&amp;quot; y seleccionar &amp;quot;Add JAR(s)&amp;quot;&lt;br /&gt;
* Examinar : BEA_HOME/WebLogic81/server/lib/ y seleccionar el &amp;quot;weblogic.jar&amp;quot;.&lt;br /&gt;
* Click &amp;quot;Don't Scan&amp;quot;.&lt;br /&gt;
* Click OK para cerrar la pantalla de Configuration.&lt;br /&gt;
&lt;br /&gt;
====Crear el Context====&lt;br /&gt;
* Click  Derecho en &amp;quot;contexts&amp;quot; en la izquierda y seleccionar: &amp;gt; New Context...&lt;br /&gt;
* Ingresar el nombre del contexto: &amp;quot;WebLogic&amp;quot;&lt;br /&gt;
* Loader: &amp;quot;WebLogic 8.1&amp;quot;&lt;br /&gt;
* ProviderURL : &amp;quot;t3://localhost:7001&amp;quot;&lt;br /&gt;
* !InitialContextFactory : &amp;quot;weblogic.jndi.WLInitialContextFactory&amp;quot;&lt;br /&gt;
* !SecurityPrincipal : &amp;quot;weblogic&amp;quot;&lt;br /&gt;
* !SecurityCredentials : &amp;quot;weblogic&amp;quot;&lt;br /&gt;
* Binding : &amp;quot;QueueConnectionFactory&amp;quot;&lt;br /&gt;
* Click OK&lt;br /&gt;
&lt;br /&gt;
====Luego en la pantalla central del Hermes====&lt;br /&gt;
* Doble click sobre context &amp;gt; Weblogic&lt;br /&gt;
* Boton derecho sobre nuestra Connection Factory (HeladeraCF)&lt;br /&gt;
* Create New Session &amp;gt; HeladeraCF&lt;br /&gt;
* Luego se agrega la cola a nuestra CF (Boton derecho sobre la cola, addTo &amp;gt; HeladeraCF&lt;br /&gt;
* Y ahora desde &amp;quot;session &amp;gt; HeladeraCF &amp;gt; &amp;quot;NuestraQueue&amp;quot; podran observar los mensajes de dicha Cola&lt;br /&gt;
&lt;br /&gt;
====Copiando Mensajes entre distintas colas de mensajes ====&lt;br /&gt;
Los mensajes se pueden copiar de una cola de mensajes a otra cola de mensajes simplemente arrastrando y soltando (drag and drop) los mensajes de una cola hacia otra.&lt;br /&gt;
Puede ser requerido por el usuario que al copiar los mensajes de una cola a otra se copien o no algunos de sus encabezados JMS. Para seleccionar qué encabezados debe mantener HermesJMS en la copia, se deben seleccionar en la configuración de la aplicación:&lt;br /&gt;
&lt;br /&gt;
* Menu Options -&amp;gt; Configuration...&lt;br /&gt;
* Seleccionar abajo el tab &amp;quot;General&amp;quot;&lt;br /&gt;
* Seleccionar las opciones &amp;quot;CopyXXX&amp;quot; donde XXX son los encabezados JMS que permite copiar.&lt;br /&gt;
&lt;br /&gt;
Entre los encabezados disponibles para copiar están:&lt;br /&gt;
&lt;br /&gt;
*JMSCorrelationID&lt;br /&gt;
*JMSExpiration&lt;br /&gt;
*JMSPriority&lt;br /&gt;
*JMSReplyTo&lt;br /&gt;
*JMSType&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Guardando los mensajes en Archivos====&lt;br /&gt;
&lt;br /&gt;
Se pueden guardar los mensajes de una cola en un archivo local que incluye la información de encabezados JMS para posteriormente poder postearlos la cantidad de veces que sea necesario:&lt;br /&gt;
* Clic derecho en un mensaje recibido, “save..”, “save as xml” &lt;br /&gt;
* Guardar el archivo con un nombre, para luego poder obtenerlo mas tarde.&lt;br /&gt;
&lt;br /&gt;
Para postear en una cola un mensaje guardado:&lt;br /&gt;
* Clic derecho en la cola en la que se quiere postear&lt;br /&gt;
* Menú messages, send xml encoded messages (o ctrl. + T) &lt;br /&gt;
* Elegir el archivo guardado previamente.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[JMS]]&lt;br /&gt;
* [http://www.hermesjms.com Página oficial de HermesJMS]&lt;/div&gt;</summary>
		<author><name>Acandal</name></author>	</entry>

	</feed>