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
:
Tabla Productos
:
id | nombre | descripcion | precio | categoria_id |
---|
1 | Xiaomi Redmi | Muy bueno | 800 | 1 |
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