Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

duda, por que la tabla de producto solo recibe el id y no el id y nombre? hibernete lo hace en automatico?

public class RegistroDeProducto {

    public static void main(String[] args) {
        Categoria celulares = new Categoria("CELULARES");

        Producto celular = new Producto("Xiaomi Redmi", "Muy bueno", new BigDecimal("800"), celulares);

        EntityManager em = JPAUtils.getEntityManager();

        ProductoDao productoDao = new ProductoDao(em);
                CategoriaDao categoriaDao = new CategoriaDao(em);

        em.getTransaction().begin();

        categoriaDao.guardar(celulares);
        productoDao.guardar(celular);    

        em.getTransaction().commit();
        em.close();
    }

}
1 respuesta
solución!

Hola Angela,

Tu pregunta es muy relevante y es un detalle importante en la forma en que JPA y Hibernate manejan las entidades y sus relaciones.

Estás creando una nueva instancia de Categoria y una nueva instancia de Producto. Cuando guardas la Categoria y luego el Producto, Hibernate se encarga de las operaciones de persistencia necesarias.

En el caso de la tabla Producto, Hibernate solo necesita almacenar el id de la Categoria asociada, no el nombre. Esto se debe a que la relación entre Producto y Categoria se establece mediante la clave foránea en la tabla Producto que corresponde al id de la Categoria en la tabla Categoria.

Por lo tanto, a pesar de que en tu código Java estás trabajando con objetos completos con todas sus propiedades, en la base de datos solo se necesita almacenar el id de la Categoria en la tabla Producto para establecer la relación.

Aquí tienes un ejemplo práctico. Imagina que tienes la siguiente situación:

Categoria celulares = new Categoria("CELULARES");
Producto celular = new Producto("Xiaomi Redmi", "Muy bueno", new BigDecimal("800"), celulares);

En la base de datos, tendrías algo así:

Tabla Categorias:

idnombre
1CELULARES

Tabla Productos:

idnombredescripcionpreciocategoria_id
1Xiaomi RedmiMuy bueno8001

Como puedes ver, en la tabla Productos, solo se almacena el id de la Categoria asociada, no el nombre.

Espero que esta explicación te ayude a entender cómo funciona la persistencia con JPA y Hibernate. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios