Semana 04: API con Spring Boot
Es un API que nos permite realizar la gestión de datos y persistencia
a través de repositorios.
public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S entity);
Optional<T> findById(ID primaryKey);
Iterable<T> findAll();
long count();
void delete(T entity);
boolean existsById(ID primaryKey);
// … more functionality omitted.
}
Necesitamos utilizar un identificador para cada entidad. Utilizando @Id podemos señalar el ID de nuestra entidad.
@SequenceGenerator(
name="EmployeeSeq",
sequenceName = "EMPLOYEES_SEQ",
initialValue = 1,
allocationSize = 10
)
// @Entity class XYZ {}
@Id
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "EmployeeSeq")
private Long id;
@Id
@GeneratedValue(
strategy = GenerationType.AUTO)
private Long id;
Ejemplo:
¿Cómo busco todas mis canciones por el nombre de un artista?
class Song {
Long id;
String title;
String artist;
// More attributes & methods
}
interface SongRepository extends Repository<Song, Long> {
List<Song> findByArtist(String artist);
}
Query Methods Keywords:
Generar consultas mediante
el nombre de los métodos (camelCase).
Se emplea para definir una relación uno a uno entre dos entidades.
Ejemplo: Persona y Pasaporte
@Entity
@Table(name = "personas")
public class Persona {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nombre;
@OneToOne(mappedBy = "persona", cascade = CascadeType.ALL)
private Pasaporte pasaporte;
// constructors, getters y setters
}
@Entity
@Table(name = "pasaportes")
public class Pasaporte {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String numero;
@OneToOne
@JoinColumn(name = "persona_id")
private Persona persona;
// constructors, getters y setters
}
Se emplea para definir una relación uno a muchos entre dos entidades.
Ejemplo: Autor y Libro, para indicar que un autor puede tener múltiples libros, pero un libro está asociado a un solo autor.
Esta anotación se utiliza en el lado opuesto de @OneToMany. Define una relación de muchos a uno entre dos entidades.
Ejemplo: Autor y Libro, para indicar que un libro pertenece a un solo autor.
Se emplea para definir una relación muchos a muchos entre dos entidades. Se podría usar @ManyToOne en la entidad "Libro" para indicar que un libro pertenece a un solo autor.
Ejemplo: Estudiante y Curso