Diferencia entre revisiones de «Hibernate»

De Dos Ideas.
Saltar a: navegación, buscar
(Ver también)
(Ver también)
 
(No se muestran 14 ediciones intermedias de 7 usuarios)
Línea 1: Línea 1:
 +
[[Category:Hibernate]]
 
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.
 
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.
  
 
Actualmente Hibernate cuanta con varios subproyectos que resuelven distintos aspectos del acceso y manipulación de datos.
 
Actualmente Hibernate cuanta con varios subproyectos que resuelven distintos aspectos del acceso y manipulación de datos.
 +
 +
== Log de querys ==
 +
Es posible decirle a Hibernate que realice un log de los comandos SQL que ejecuta. Esto resulta muy útil en tiempo de desarrollo.
 +
 +
Para esto es necesario definir la propiedad ''show_sql'' en la configuración de Hibernate (generalmente, el archivo ''hibernate.cfg.xml''):
 +
 +
<code xml>
 +
    <property name="show_sql">true</property>
 +
</code>
 +
 +
Al ejecutar veremos algo como lo siguiente:
 +
 +
<code sql>
 +
select emails0_.PERSON_ID as PERSON1_0_, emails0_.EMAIL_ADDR as EMAIL2_0_
 +
from PERSONA emails0_
 +
where emails0_.PERSON_ID=?
 +
</code>
 +
 +
Si además queremos que el log aparezca mejor formateado, agregamos la variable ''format_sql'':
 +
 +
<code xml>
 +
    <property name="format_sql">true</property>
 +
</code>
 +
 +
Y veremos:
 +
<code sql>
 +
select
 +
    emails0_.PERSON_ID as PERSON1_0_,
 +
    emails0_.EMAIL_ADDR as EMAIL2_0_
 +
from
 +
    PERSONA emails0_
 +
where
 +
    emails0_.PERSON_ID=?
 +
</code>
 +
 +
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'':
 +
 +
<code>
 +
    log4j.logger.org.hibernate.type=debug
 +
</code>
 +
 +
Y veremos:
 +
<code>
 +
12:30:56,551 DEBUG LongType:133 - binding '1' to parameter: 1
 +
12:30:56,551 DEBUG LongType:172 - returning '1' as column: PERSON1_0_
 +
12:30:56,567 DEBUG StringType:172 - returning 'demo@dosideas.com' as column: EMAIL2_0_
 +
</code>
 +
 +
Otra opción bastante interesante es ver el manejo de recursos por parte de Jdbc. Se debe agregar la propiedad:
 +
 +
<code>
 +
    log4j.logger.org.hibernate.jdbc=debug
 +
</code>
 +
 +
Y veremos:
 +
 +
<code>
 +
  12:30:56,551 - opening JDBC connection
 +
12:30:56,553 - preparing statement
 +
12:30:56,554 - about to open ResultSet (open ResultSets: 0, globally: 0)
 +
12:30:57,551 - about to close ResultSet (open ResultSets: 1, globally: 1)
 +
12:30:58,551 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
 +
12:30:58,552 - closing statement
 +
12:30:56,553 - aggressively releasing JDBC connection
 +
12:30:56,554 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0)
 +
(open ResultSets: 0, globally: 0)]
 +
</code>
  
 
== Ver también ==
 
== Ver también ==
* [[Cache de Hibernate]]
+
* [[Cache De Hibernate]]
 
* [[Hibernate Con Spring]]
 
* [[Hibernate Con Spring]]
 +
* [[Hibernate Annotations con Spring]]
 +
* [[Actualizacion Dinamica Con Hibernate]]
 +
* [[Eficiencia Ejecutando Querys Con Hibernate]]
 +
* [[Stored Procedures con Hibernate]]
 +
* [[Practicas con Hibernate]]
 
* [http://www.hibernate.org/ Web oficial de Hibernate]
 
* [http://www.hibernate.org/ Web oficial de Hibernate]
 +
* [http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html/files/hibernate-tutorials.zip Hibernate 4 Tutorials (proyectos con código de ejemplo)]
 
* [http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp Tutorial de Hibernate]
 
* [http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp Tutorial de Hibernate]
 
* [http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html Comparación entre Hibernate, iBatis y JPA]
 
* [http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html Comparación entre Hibernate, iBatis y JPA]
 +
* [http://www.dosideas.com/java/180-testeando-rapido-todos-los-mapeos-de-hibernate.html Testear todos los mapeos de Hibernate]

Revisión actual del 17:22 7 ago 2012

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.

Actualmente Hibernate cuanta con varios subproyectos que resuelven distintos aspectos del acceso y manipulación de datos.

Log de querys

Es posible decirle a Hibernate que realice un log de los comandos SQL que ejecuta. Esto resulta muy útil en tiempo de desarrollo.

Para esto es necesario definir la propiedad show_sql en la configuración de Hibernate (generalmente, el archivo hibernate.cfg.xml):

   <property name="show_sql">true</property>

Al ejecutar veremos algo como lo siguiente:

select emails0_.PERSON_ID as PERSON1_0_, emails0_.EMAIL_ADDR as EMAIL2_0_ from PERSONA emails0_ where emails0_.PERSON_ID=?

Si además queremos que el log aparezca mejor formateado, agregamos la variable format_sql:

   <property name="format_sql">true</property>

Y veremos: select

   emails0_.PERSON_ID as PERSON1_0_,
   emails0_.EMAIL_ADDR as EMAIL2_0_

from

   PERSONA emails0_

where

   emails0_.PERSON_ID=?

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:

   log4j.logger.org.hibernate.type=debug

Y veremos: 12:30:56,551 DEBUG LongType:133 - binding '1' to parameter: 1 12:30:56,551 DEBUG LongType:172 - returning '1' as column: PERSON1_0_ 12:30:56,567 DEBUG StringType:172 - returning 'demo@dosideas.com' as column: EMAIL2_0_

Otra opción bastante interesante es ver el manejo de recursos por parte de Jdbc. Se debe agregar la propiedad:

   log4j.logger.org.hibernate.jdbc=debug

Y veremos:

  12:30:56,551 - opening JDBC connection

12:30:56,553 - preparing statement 12:30:56,554 - about to open ResultSet (open ResultSets: 0, globally: 0) 12:30:57,551 - about to close ResultSet (open ResultSets: 1, globally: 1) 12:30:58,551 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1) 12:30:58,552 - closing statement 12:30:56,553 - aggressively releasing JDBC connection 12:30:56,554 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]

Ver también