anotaciones en persistencia de objetos con jpa y hibernate

Iniciado por Beginner Web, 24 Octubre 2019, 22:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

Hola alguien me puede guiar con esto? no se que significa las siguientes lineas de codigo y tampoco se como es que despues trabaja con lo base de datos es decir el paso paso por debajo del codigo :(

Código (java) [Seleccionar]
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name="ciudad_id", nullable=false)
private Ciudad ciudad;

@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name="codigo_postal_id", nullable=false)
private CodigoPostal codigoPostal;
7w7

WHK

Pues Spring JPA e hibernate lo que hace es crear una capa de datos inferior a tu proyecto encargado de comunicarse con tu db final, una de las grandes ventajas es que jamas haces consultas sql sino que utilizas anotaciones de sql estandar y manipulas objetos a modo de DTO, esto permite que puedas cambiar de driver facilmente sin tener que hacer cambios en tu aplicación, por ejemplo, puedes migrar de mysql a oracle, postgre, sql server, etc. A demás de esto crea un almacen en memoria para optimizar la carga de las consultas SQL entre muchas otras ventajas.

Las anotaciones ManyToOne indican la relación que tendrán dos tablas de muchos a uno, eso quiere decir que se creará una columna adicional con el id de la fila, por eso se declara en @JoinColumn.

Es posible crear joins manualmente pero debes utilizar una sintaxis especial que es única de spring: https://www.baeldung.com/spring-data-jpa-query , donde haces consultas a objetos de tu proyecto en ves de tablas y columnas.

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

El que sabe mucho mas que yo de este tema es Octalh, lo podrás encontrar en el grupo de telegram de elhacker.net

Saludos.

Beginner Web

en otras palabras las anotaciones con referencia a otras tablas es solo una representacion? eso es lo que entendí  :o
7w7

WHK

Asi es, internamente las clases usan templates, esos templates definen anotaciones, algo asi como parámetros opcionales que se inyectan a un objeto, eso es propio de Java, especialmente en Spring Boot, es un tema independiente a JPA. Yo los uso para crear anotaciones personalizadas para el control de accesos a ciertos controladores, por ejemplo un @authenticatedRequired sobre la clase del controlador, de esa manera el control de sesiones se puede abarcar de manera transversal para todas las llamadas desde un solo punto e interrumpir cada función o constructor.

https://www.baeldung.com/java-custom-annotation

Saludos.