SQL primero
Una clave primaria identifica una fila; una clave foránea conecta tablas; un índice acelera ciertas lecturas con coste de espacio y escritura. PostgreSQL y MySQL son motores relacionales habituales. Confirma motor, versión y esquema en el repositorio.
El ORM genera SQL, pero no elimina la necesidad de entender consultas y relaciones.
JPA e Hibernate
JPA (Jakarta Persistence en generaciones recientes) define una API y anotaciones para persistencia Java. Hibernate es una implementación común de esa API.
@Entitymapea una clase a una entidad persistente.@Idindica el identificador.- Las anotaciones de relación describen asociaciones entre entidades.
JpaRepositoryproporciona operaciones frecuentes.
Los paquetes javax.persistence y jakarta.persistence ayudan a reconocer generaciones. No mezcles dependencias manualmente.
Transacciones, carga diferida y N+1
- Transacción: grupo coherente de cambios que se confirma o revierte. Revisa el alcance de
@Transactional. - Lazy loading: una relación se carga al acceder a ella; hacerlo fuera de la sesión puede fallar o generar consultas adicionales.
- N+1: se obtiene una lista de N filas y después se ejecuta otra consulta por cada relación. Inspecciona el SQL para detectarlo.
- DTO: controla qué datos entran y salen de la API. Serializar entidades directamente puede exponer datos o crear ciclos.
Migraciones de esquema
Flyway y Liquibase versionan cambios reproducibles de esquema. Busca db/migration o los changelogs. Para un cambio ya aplicado en un entorno compartido, agrega una migración nueva siguiendo la convención del equipo.
Conexión y secretos
La URL, el usuario y la contraseña suelen llegar mediante configuración de perfil, variables de entorno o un gestor de secretos. No subas credenciales al repositorio. Confirma SSL, permisos y red antes de conectar a una base compartida.