JavaRush /Blog Java /Random-ES /Preguntas de la entrevista de Hibernate
Dr-JohnZoidberg
Nivel 41
Киев

Preguntas de la entrevista de Hibernate

Publicado en el grupo Random-ES
Este artículo es una traducción y mejora de artículos extranjeros (al final del artículo se incluye una lista de recursos). Se amplían las respuestas a algunas preguntas, se proporcionan enlaces a recursos de terceros que contienen respuestas que pueden surgir durante el proceso de lectura. 1) ¿Qué es Hibernar? Es un marco para el mapeo relacional de objetos de entidades en bases de datos relacionales tradicionales. Las principales características del marco: 1) Generación y actualización automática de tablas en bases de datos; 2) Dado que las consultas principales a la base de datos (guardar, actualizar, eliminar y buscar) se presentan como métodos del marco, el código que escribe el desarrollador se reduce significativamente; 3) Proporciona el uso de un lenguaje similar a SQL (HQL - lenguaje de consulta de hibernación). Las consultas HQL se pueden escribir junto con objetos de datos (clases POJO preparadas para trabajar con una base de datos). 2) Cómo hibernar¿ayuda con la programación? Hibernate implementa una serie de funciones que simplifican enormemente el trabajo del desarrollador. — Una de estas características es que la hibernación permite al desarrollador evitar escribir la mayoría de las consultas SQL (ya están implementadas, solo necesita usar los métodos que proporciona el marco). — Bajo el capó, Hibernate tiene un montón de herramientas útiles que aceleran significativamente la aplicación, las más notables de las cuales son el almacenamiento en caché de dos niveles y el ajuste fino de los retiros diferidos y de recuperación. — Genera tablas en la propia base de datos. 3) Métodos para configurar el trabajo con Hibernate. Hay cuatro formas de configurar el trabajo con Hibernate: - usando anotaciones; - hibernación.cfg.xml; - hibernar.properties; - persistencia.xml. El método de configuración más común: a través de anotaciones y el archivo persistence.xml, en cuanto a los archivos hibernate.properties e hibernate.cfg.xml, entonces hibernate.cfg.xml es más importante (si la aplicación tiene ambos archivos, entonces la configuración de Se aceptan el archivo hibernate.cfg.xml). La configuración con anotaciones, aunque conveniente, no siempre es posible; por ejemplo, si desea tener diferentes configuraciones de entidades para diferentes bases de datos o para diferentes situaciones, entonces debe usar archivos de configuración xml. 4) ¿Qué interfaces clave utiliza Hibernate? Hay cinco interfaces clave que se utilizan en todas las aplicaciones relacionadas con Hibernate: - Interfaz de sesión; - Interfaz SessionFactory; — interfaz de configuración; — interfaz de transacciones; — Interfaces de Consulta y Criterios. 5) ¿Cuál es la función de la interfaz de sesión en Hibernate? La sesión es la interfaz principal que se encarga de comunicarse con la base de datos. También ayuda a crear objetos de solicitud para obtener objetos persistentes. (objeto persistente - un objeto que ya está en la base de datos; objeto de solicitud - un objeto que se obtiene cuando recibimos el resultado de una consulta en la base de datos, es con esto que funciona la aplicación). El objeto Session se puede obtener de SessionFactory: Session session = sessionFactory.openSession(); La función de la interfaz de sesión: es un contenedor para la conexión jdbc a la base de datos; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - es una fábrica de transacciones (según la documentación oficial transacción - permite que la aplicación defina unidades de trabajo, lo que, en esencia, significa que la transacción define los límites de las operaciones asociadas con la base de datos). — es el custodio del caché obligatorio de primer nivel. 6) ¿Cuál es la función de la interfaz SessionFactory en Hibernate? Es del objeto SessionFactory que obtenemos objetos del tipo Sesión. Solo hay un SessionFactory para toda la aplicación y se inicializa cuando se inicia la aplicación. SessionFactory almacena en caché los metadatos y las consultas SQL que la aplicación utiliza con frecuencia durante la operación. También almacena en caché la información que se recibió en una de las transacciones y se puede utilizar en otras transacciones. El objeto SessionFactory se puede obtener mediante la siguiente llamada: SessionFactory sessionFactory = configuración.buildSessionFactory(); 7) ¿Qué tipos de colecciones se proporcionan en Hibernate? Bolsa, Conjunto, Lista, Mapa, Matriz. 8) ¿Qué es una colección tipo Bolsa y para qué se utiliza? En su implementación, el tipo de colección Bag es muy similar a Set, la diferencia es que Bag puede almacenar valores duplicados. Bag almacena una lista de elementos no indexados. La mayoría de las tablas de la base de datos tienen índices que muestran la posición de un elemento de datos entre sí; estos índices se representan en la tabla como una columna separada. Con el mapeo relacional de objetos, los valores de una columna de índice se asignan a un índice en una matriz, un índice en una lista o una clave en un mapa. Si necesita obtener una colección de objetos que no contienen datos de índice, puede utilizar colecciones del tipo Bolsa o Conjunto (las colecciones contienen datos sin ordenar, pero se pueden ordenar según la solicitud). 9) ¿Cuál es la diferencia en el funcionamiento de los métodos load();? y obten();? método cargar(); Generalmente se usa cuando no está seguro de que el objeto solicitado ya esté en la base de datos. Si no se encuentra el objeto, entonces el método lanza una excepción. Si se encuentra el objeto, el método devuelve un objeto proxy, que es un enlace al objeto ubicado en la base de datos (la solicitud de la base de datos aún no se ha realizado, un tipo de recuperación diferida), una solicitud directa a la base de datos cuando accedemos directamente al objeto requerido a través de un objeto proxy. método get(); utilizado entonces, no está 100 por ciento seguro de si el objeto solicitado está en la base de datos. En el caso de acceder a un objeto inexistente, el método get(); devolverá nulo. Si se encuentra el objeto, el método get(); devolverá el objeto en sí y la consulta a la base de datos se realizará inmediatamente. 10) ¿Qué busca Lazy en Hibernate? El tipo de pago diferido en Hibernate está asociado con entidades hoja (secundarias) y define una política de pago compartido si hay una solicitud para retirar una entidad principal. Un ejemplo sencillo: existe una entidad Casa. Almacena información sobre su número, calle, número de apartamentos e información sobre las familias que viven en los apartamentos; estas familias forman una entidad hija relativa a la entidad Casa. Cuando solicitamos información sobre una Casa, puede que nos resulte completamente innecesario conocer información sobre las familias que viven en ella, aquí viene en nuestra ayuda el vazy fetching, que nos permite configurar la entidad Casa para que solo se proporcione información sobre las familias. A pedido, esto nubla significativamente la solicitud y acelera la solicitud. © dev-bay La mayoría de las tablas de la base de datos tienen índices que muestran la posición de un elemento de datos entre sí; estos índices se representan en la tabla como una columna separada. Con el mapeo relacional de objetos, los valores de una columna de índice se asignan a un índice en una matriz, un índice en una lista o una clave en un mapa. Si necesita obtener una colección de objetos que no contienen datos de índice, puede utilizar colecciones del tipo Bolsa o Conjunto (las colecciones contienen datos sin ordenar, pero se pueden ordenar según la solicitud). 9) ¿Cuál es la diferencia en el funcionamiento de los métodos load();? y obten();? método cargar(); Generalmente se usa cuando no está seguro de que el objeto solicitado ya esté en la base de datos. Si no se encuentra el objeto, entonces el método lanza una excepción. Si se encuentra el objeto, el método devuelve un objeto proxy, que es un enlace al objeto ubicado en la base de datos (la solicitud de la base de datos aún no se ha realizado, un tipo de recuperación diferida), una solicitud directa a la base de datos cuando accedemos directamente al objeto requerido a través de un objeto proxy. método get(); utilizado entonces, no está 100 por ciento seguro de si el objeto solicitado está en la base de datos. En el caso de acceder a un objeto inexistente, el método get(); devolverá nulo. Si se encuentra el objeto, el método get(); devolverá el objeto en sí y la consulta a la base de datos se realizará inmediatamente. 10) ¿Qué busca Lazy en Hibernate? El tipo de pago diferido en Hibernate está asociado con entidades hoja (secundarias) y define una política de pago compartido si hay una solicitud para retirar una entidad principal. Un ejemplo sencillo: existe una entidad Casa. Almacena información sobre su número, calle, número de apartamentos e información sobre las familias que viven en los apartamentos; estas familias forman una entidad hija relativa a la entidad Casa. Cuando solicitamos información sobre una Casa, puede que nos resulte completamente innecesario conocer información sobre las familias que viven en ella, aquí viene en nuestra ayuda el vazy fetching, que nos permite configurar la entidad Casa para que solo se proporcione información sobre las familias. A pedido, esto nubla significativamente la solicitud y acelera la solicitud. © dev-bay La mayoría de las tablas de la base de datos tienen índices que muestran la posición de un elemento de datos entre sí; estos índices se representan en la tabla como una columna separada. Con el mapeo relacional de objetos, los valores de una columna de índice se asignan a un índice en una matriz, un índice en una lista o una clave en un mapa. Si necesita obtener una colección de objetos que no contienen datos de índice, puede utilizar colecciones del tipo Bolsa o Conjunto (las colecciones contienen datos sin ordenar, pero se pueden ordenar según la solicitud). 9) ¿Cuál es la diferencia en el funcionamiento de los métodos load();? y obten();? método cargar(); Generalmente se usa cuando no está seguro de que el objeto solicitado ya esté en la base de datos. Si no se encuentra el objeto, entonces el método lanza una excepción. Si se encuentra el objeto, el método devuelve un objeto proxy, que es un enlace al objeto ubicado en la base de datos (la solicitud de la base de datos aún no se ha realizado, un tipo de recuperación diferida), una solicitud directa a la base de datos cuando accedemos directamente al objeto requerido a través de un objeto proxy. método get(); utilizado entonces, no está 100 por ciento seguro de si el objeto solicitado está en la base de datos. En el caso de acceder a un objeto inexistente, el método get(); devolverá nulo. Si se encuentra el objeto, el método get(); devolverá el objeto en sí y la consulta a la base de datos se realizará inmediatamente. 10) ¿Qué busca Lazy en Hibernate? El tipo de pago diferido en Hibernate está asociado con entidades hoja (secundarias) y define una política de pago compartido si hay una solicitud para retirar una entidad principal. Un ejemplo sencillo: existe una entidad Casa. Almacena información sobre su número, calle, número de apartamentos e información sobre las familias que viven en los apartamentos; estas familias forman una entidad hija relativa a la entidad Casa. Cuando solicitamos información sobre una Casa, puede que nos resulte completamente innecesario conocer información sobre las familias que viven en ella, aquí viene en nuestra ayuda el vazy fetching, que nos permite configurar la entidad Casa para que solo se proporcione información sobre las familias. A pedido, esto nubla significativamente la solicitud y acelera la solicitud. © dev-bay Consulta directa a la base de datos cuando accedemos directamente al objeto requerido a través de un objeto proxy. método get(); utilizado entonces, no está 100 por ciento seguro de si el objeto solicitado está en la base de datos. En el caso de acceder a un objeto inexistente, el método get(); devolverá nulo. Si se encuentra el objeto, el método get(); devolverá el objeto en sí y la consulta a la base de datos se realizará inmediatamente. 10) ¿Qué busca Lazy en Hibernate? El tipo de pago diferido en Hibernate está asociado con entidades hoja (secundarias) y define una política de pago compartido si hay una solicitud para retirar una entidad principal. Un ejemplo sencillo: existe una entidad Casa. Almacena información sobre su número, calle, número de apartamentos e información sobre las familias que viven en los apartamentos; estas familias forman una entidad hija relativa a la entidad Casa. Cuando solicitamos información sobre una Casa, puede que nos resulte completamente innecesario conocer información sobre las familias que viven en ella, aquí viene en nuestra ayuda el vazy fetching, que nos permite configurar la entidad Casa para que solo se proporcione información sobre las familias. A pedido, esto nubla significativamente la solicitud y acelera la solicitud. © dev-bay Consulta directa a la base de datos cuando accedemos directamente al objeto requerido a través de un objeto proxy. método get(); utilizado entonces, no está 100 por ciento seguro de si el objeto solicitado está en la base de datos. En el caso de acceder a un objeto inexistente, el método get(); devolverá nulo. Si se encuentra el objeto, el método get(); devolverá el objeto en sí y la consulta a la base de datos se realizará inmediatamente. 10) ¿Qué busca Lazy en Hibernate? El tipo de pago diferido en Hibernate está asociado con entidades hoja (secundarias) y define una política de pago compartido si hay una solicitud para retirar una entidad principal. Un ejemplo sencillo: existe una entidad Casa. Almacena información sobre su número, calle, número de apartamentos e información sobre las familias que viven en los apartamentos; estas familias forman una entidad hija relativa a la entidad Casa. Cuando solicitamos información sobre una Casa, puede que nos resulte completamente innecesario conocer información sobre las familias que viven en ella, aquí viene en nuestra ayuda el vazy fetching, que nos permite configurar la entidad Casa para que solo se proporcione información sobre las familias. A pedido, esto nubla significativamente la solicitud y acelera la solicitud. © dev-bay
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION