Foros del Web » Programación para mayores de 30 ;) » Java »

Como Hibernate?

Estas en el tema de Como Hibernate? en el foro de Java en Foros del Web. La pregunta en cuestión es como actúa Hibernate para crear la persistencia de un objeto de conexión a la base de datos, he encontrado muchos ...
  #1 (permalink)  
Antiguo 19/12/2008, 12:36
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
Pregunta Como Hibernate?

La pregunta en cuestión es como actúa Hibernate para crear la persistencia de un objeto de conexión a la base de datos, he encontrado muchos manuales donde explican como crear una conexión persistente... Pero ninguno de ellos explica que esta haciendo en cada paso...

Alguien podría explicarme en que parte se crea el objeto persistente, si utiliza una sesión del usuario o lo almacena en la sesión del servidor mediante un servlet, como lo reutilizo nuevamente en uno y otros JSP... Cuales son las funciones del XML.

Creo que con esto, seria mejor crear un nuevo tutorial en algún blog.
  #2 (permalink)  
Antiguo 19/12/2008, 13:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Respuesta: Como Hibernate?

Eumm... creo que le estas poniendo demasiado trabajo a Hibernate

En realidad una libreria como Hibernate se puede ver como un "traductor automático" de "manipulaciones con objetos" a "sentencias SQL" más un sistema de cachés. No tiene nada que ver con la sesion ni con servlets, ya que es independiente de si la aplicación es web, escritorio, o lo que sea.

La idea da vueltas en torno a tres conceptos principales:
.- El objeto global que gestiona la configuracion de las traducciones, la cache etc. Este es un objeto que suele ser único para toda la aplicación y que es caro de inicializar, por lo que se crea una vez y sólo se destruye al cerrar o reiniciar la aplicación.
.- El objeto que representa una "conversacion" de un usuario con la BDD. El equivalente a una conexion JDBC. Estos objetos se suelen crear y "destruir" más "alegremente" y suele haber uno por cada interacción del usuario con la BDD. Pongo destruir entre comillas por que a veces no se destruyen de verdad, si no que se reutilizan más veces, pero conceptualmente despues de usarse, se tiran.
.- Los objetos que representan el modelo de datos. Estos son los objetos los cuales se modifican en los programas y estas modificaciones se traducen en sentencias SQL que se lanzan contra la BDD. Normalmente los objetos se obtienen, o se crean/borran, a traves del objeto que representa la sesion, y la traducción al SQL se hace siguiendo las reglas del objeto que representa la configuración.

Teniendo estos conceptos claros, es más facil entender como funcionan la mayoria de sistemas de mapeo objeto-relacional, ya que casi todos siguen un modelo parecido aunque cambian los nombres de los objetos, como se les llama etc.

En hibernate, el XML o anotaciones es para configurar el objeto global (org.hibernate.SessionFactory), del cual se obtienen sesiones (org.hibernate.Session) y con la sesion es con la que se guardan objetos (save), se modifican (saveOrUpdate) o se borran(delete). Al realizar estas acciones se envian los comandos SQL equivalentes a la BDD (de hecho se puede configurar y solo se envian al hacer un flush() de la sesion).

Lo habitual es guardar el objeto SessionFactory en el servlet context o en algun filtro (a mi no me gusta pero es una solucion muy popular) y de ahi se saca para cada request una Session, se manipulan los objetos, se hace un flush y luego un close de la sesion.

No hay un tutorial sobre eso por que cada programa usa Hibernate como quiere e Hibernate no te dicta esas cosas, asi que no hay "guia".

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:45.