<!-- Aplicación Web con Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Acceso a base de datos con JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Driver de PostgreSQL -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<!-- DevTools para Live Reload -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
package com.tuempresa.series.dto;
public record DatosSerie(
Long id,
String titulo,
Integer totalTemporadas,
Double evaluacion,
String poster
) {
}
package com.tuempresa.series.model;
import jakarta.persistence.*;
@Entity
@Table(name = "series")
public class Serie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titulo;
private Integer totalTemporadas;
private Double evaluacion;
private String poster;
public Serie() {}
public Long getId() { return id; }
public String getTitulo() { return titulo; }
public Integer getTotalTemporadas() { return totalTemporadas; }
public Double getEvaluacion() { return evaluacion; }
public String getPoster() { return poster; }
public void setId(Long id) { this.id = id; }
public void setTitulo(String titulo) { this.titulo = titulo; }
public void setTotalTemporadas(Integer totalTemporadas) { this.totalTemporadas = totalTemporadas; }
public void setEvaluacion(Double evaluacion) { this.evaluacion = evaluacion; }
public void setPoster(String poster) { this.poster = poster; }
}
package com.tuempresa.series.repository;
import com.tuempresa.series.model.Serie;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SerieRepository extends JpaRepository<Serie, Long> {
}
package com.tuempresa.series.controller;
import com.tuempresa.series.dto.DatosSerie;
import com.tuempresa.series.repository.SerieRepository;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class SerieController {
private final SerieRepository repositorio;
public SerieController(SerieRepository repositorio) {
this.repositorio = repositorio;
}
@GetMapping("/series")
public List<DatosSerie> obtenerSeries() {
return repositorio.findAll()
.stream()
.map(s -> new DatosSerie(
s.getId(),
s.getTitulo(),
s.getTotalTemporadas(),
s.getEvaluacion(),
s.getPoster()
))
.toList();
}
}
package com.tuempresa.series.controller;
import com.tuempresa.series.dto.DatosSerie;
import com.tuempresa.series.repository.SerieRepository;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class SerieController {
private final SerieRepository repositorio;
public SerieController(SerieRepository repositorio) {
this.repositorio = repositorio;
}
@GetMapping("/series")
public List<DatosSerie> obtenerSeries() {
return repositorio.findAll()
.stream()
.map(s -> new DatosSerie(
s.getId(),
s.getTitulo(),
s.getTotalTemporadas(),
s.getEvaluacion(),
s.getPoster()
))
.toList();
}
}
spring.application.name=series
spring.datasource.url=jdbc:postgresql://localhost:5432/seriesdb
spring.datasource.username=postgres
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.devtools.livereload.enabled=true
[
{
"id": 1,
"titulo": "Breaking Bad",
"totalTemporadas": 5,
"evaluacion": 9.5,
"poster": "url_del_poster"
}
]