CodeGym/Cursos Java/Módulo 4. Working with databases/Proyecto relacionado: Hibernate (2)

Proyecto relacionado: Hibernate (2)

Disponible

Hoy nuestra tarea es completar el segundo proyecto sobre el tema de Hibernate. Su esencia es comprender la estructura de la base de datos, mapear la entidad a las tablas existentes y agregar la funcionalidad mínima para verificar que el mapeo se realice correctamente.

Ahora con más detalle:

  1. Descargue el archivo de volcado e impleméntelo en su máquina local. Como base de datos, utilizaremos una base de datos de prueba, que se distribuye como ejemplo junto con el paquete de instalación de MySQL. El volcado es necesario para corregir el estado de la base de datos, ya que no podemos garantizar que no cambie en un día, mes o año.
  2. No tendremos una plantilla de proyecto, así que cree el proyecto usted mismo. Debe ser un proyecto maven con todas las dependencias requeridas ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
  3. Conecte nuestra base de datos implementada localmente como fuente de datos en Idea. Después de eso, en la pestaña Base de datos, coloque el cursor en el esquema de la película y presione la combinación de teclas Alt+Ctrl+Shift+U(solo funciona en la versión Ultimate). Esto mostrará la estructura de todo el esquema de la película (con nombres de columnas, claves, etc.). Se ve como esto:

    Estoy de acuerdo, no es muy cómodo de ver. Desactive la visualización del título de todas las columnas y comentarios:

    Como resultado, obtendrá un esquema de base de datos que ya se puede analizar:

  4. El circuito se ve complicado, pero no todo es tan malo. Para analizar la estructura de la base de datos, debe encontrar por dónde empezar. No hay una sola respuesta correcta, pero recomendaría comenzar con una tabla film. Tomemos algunas relaciones como ejemplo:
    • La relación entre tablas filmy film_textes una relación OneToOne explícita , porque la tabla film_texttiene un campo film_idqueNOse refiere a una ID de una tabla film(sin clave externa). Pero por nombre y lógica, esta conexión debería ser. Además, en la tabla, film_textel campo film_idactúa como clave principal, lo que garantiza que una "película" corresponde a no más de un "texto de película".
    • Ahora echemos un vistazo a las tablas filmy category. Lógicamente, una película puede tener varias categorías. Y una categoría, tal vez diferentes películas. Además, existe una tabla de enlace intermedia entre estas dos tablas film_category. En base a todo lo anterior, se trata de una relación ManyToMany explícita .
    • Miramos las tablas filmy language. Desde el punto de vista de la lógica, la película puede tener una traducción a diferentes idiomas y diferentes películas pueden estar en el mismo idioma. Es decir, se sugiere ManyToMany . Pero si miramos el contenido de la tabla film, podemos ver que cada fila de la tabla es una película única. Y solo hay un campo language_id en la línea (también hay original_language_id, pero en todos los registros es nulo, por lo que podemos ignorarlo). Es decir, una película solo puede tener un idioma. Y un idioma, tal vez diferentes películas. La conexión es ManyToOne (la conexión se dirige del cine al lenguaje).
  5. Ahora la tarea principal es crear todas las clases de entidad necesarias y asignarlas a las tablas de esquema movie.
  6. Agregue un método que pueda crear un nuevo cliente (tabla de clientes) con todos los campos dependientes. No olvide hacer que el método sea transaccional (para no caer en la situación de que la dirección del comprador esté registrada en la base de datos, pero el comprador mismo no).
  7. Agregue un método transaccional que describa el evento "el cliente fue y devolvió una película alquilada previamente". Elija cualquier comprador y evento de alquiler de su elección. No es necesario volver a calcular la calificación de la película.
  8. Agregue un método transaccional que describa el evento “el comprador fue a la tienda (tienda) y alquiló (alquiler) inventario (inventario) allí. Al mismo tiempo, realizó un pago (pago) al vendedor (personal). Película (a través de inventario) elija a su discreción. La única restricción es que la película debe estar disponible para alquiler. Es decir, no debe haber ningún registro de inventario en alquiler o debe completarse la columna return_date de la tabla para el último alquiler de este inventario.rental
  9. Agregue un método transaccional que describa el evento "se filmó una nueva película y estuvo disponible para alquilar". Película, idioma, actores, categorías, etc., elige a tu criterio.
  10. La estructura de la tabla no se puede cambiar. Pero necesita hacer sugerencias para mejorar. Identificamos un lugar problemático en el párrafo 4 (ausencia de clave externa en la tabla film_texten el campo film_idde la tabla film). Vea si todavía hay tales "errores" en la estructura de la base de datos. Si es así, agregue un archivo Léame a la raíz del proyecto y describa estos errores.

Análisis del proyecto:

Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios