2010-06-11 8 views
5

No he trabajado con Hibernate. Tengo un poco de experiencia en Java. Estaba pasando por una bestia de una aplicación java creada por Oracle (Retail Price Management). Esperaba que gran cantidad de código SQL incrustado allí, ya que la aplicación hace un uso intensivo de la base de datos. ¡Pero para mi sorpresa, NO código SQL incorporado! hasta aquí. Descubrí que estaba usando lo que se llama "Hibernar" del lote de archivos .hbm.xml. ¿Es una marca registrada de los programas de Java que usan hibernación o tal vez no he visto la base de código completa ?. ¿Alguien podría aclararme cómo es posible? Gracias.¿Los programas de hibernación de Java no tienen código sql?

Respuesta

2

Hibernate, como todas las herramientas ORM, de hecho reduce o elimina la necesidad de utilizar SQL prima en código Java, debido a lo siguiente:

  • muchas asociaciones entre varias entidades se registran en el mapeo de Hibernate, por lo que estos son recogidos automáticamente por Hibernate, es decir, si tiene una relación de agregación entre dos clases en el lado Java, esto puede correlacionarse como una relación de clave externa en el DB e Hibernate, cada vez que se carga una instancia de clase A, puede cargar automáticamente el También se pueden realizar muchas consultas en el propio lenguaje de consulta HQL de Hibernate, o usando su API de Criteria. También se pueden realizar muchas consultas en la clase B,
  • .

Debajo del capó Hibernate genera SQL para comunicarse con el DB, pero esto no es visible en el lado de Java. Sin embargo, se puede ver en los registros, si está habilitado.

Debido a esto, los programas que usan Hibernate muy raramente necesitan usar JDBC o SQL directamente. Las excepciones generalmente se agrupan en esquemas DB heredados "difíciles" que Hibernate no puede manejar por completo.

1

Hibernate genera SQL para todas sus operaciones de base de datos estándar. Comprende diferentes dialectos de SQL, y los archivos de mapeo (.hbm.xml) le informan sobre la estructura de la base de datos para que sepa cómo construir sus consultas. Hay una configuración showSql que puede activar si desea verla emitiendo su SQL generado mientras se ejecuta.

1

Hibernate es un asignador de objetos relacionales (ORM). Los ORM se utilizan para ocultar los feos detalles de la incompatibilidad SQL [sic] entre las bases de datos de su programa: usted define sus tablas y las asigna a una jerarquía de objetos (los archivos .hbm.xml) y luego Hibernate hace el resto. Por lo tanto, la mayoría de los programas que usan Hibernate no verán una sola frase de SQL, a menos que haya una razón específica para ejecutar una consulta complicada.

1

Hibernate es una herramienta o tecnología que se ocupa de la interacción entre la base de datos y la aplicación. Debe indicarle la estructura de la aplicación y la base de datos, esto es lo que está en los archivos .hbm.xml.

El SQL es generado por Hibernate en tiempo de ejecución (tipo de)

Digamos que tienes una clase Fruit, y objetos de esto es persistido en una tabla T_FRUIT.

Usted dice esto para hibernar, a través de los archivos .hbm.xml. Que hay una tabla T_FRUIT, esta tabla está representada por la clase Fruit y los campos de la clase Fruit corresponden a las columnas de la tabla T_FRUIT.

Y luego sabe que cada vez que intenta guardar una fruta, debe insertar/actualizar a la tabla T_FRUIT.

Cuando desee crear una manzana, cree un objeto de fruta correspondiente a manzana y guarde "guardar esta fruta". Hibernate se encarga de persistir.

Puede tener relaciones definidas entre tablas, e Hibernate es lo suficientemente inteligente como para persistir en varias tablas.

Cuando trae una fruta, hibernate obtiene los detalles de la fruta y sus hijos también (datos de las tablas de referencia). Y puede decir si desea buscar a todos los niños de una vez, o cuando sea necesario.

Y así sucesivamente. El objetivo es facilitarle la vida y mantener el código, fácil de leer, portátil, ...

Con esta información, permítame redirect you.

Cuestiones relacionadas