Pular para o conteúdo

Lista 009 - Persistência

Crie a estrutura JSON para representar um catálogo simples de jogos digitais.

  • O catálogo deve conter pelo menos 3 jogos.
  • Cada jogo deve possuir os atributos: id, titulo, estudio, anoLancamento, preco e categorias.
  • Pelo menos um dos jogos deve possuir uma lista com 3 categorias.
  • Crie um segundo JSON representando a compra de um jogo por um cliente.
  • O JSON da compra deve conter: id, cliente, email, jogoId, valorPago e dataCompra.
  • Um arquivo .json com o catálogo.
  • Um arquivo .json com uma compra.
  • Uma explicação curta indicando quais campos representam texto, número, lista e identificador.

Exercício 2 - Persistência de dados com Spring Data JPA

Seção intitulada “Exercício 2 - Persistência de dados com Spring Data JPA”

Implemente a persistência de uma entidade chamada Jogo em uma aplicação Spring Boot.

  • Crie um projeto com as dependências Spring Web, Spring Data JPA e H2 Database.
  • Crie a entidade Jogo com os atributos: id, titulo, estudio, anoLancamento e preco.
  • Configure o banco H2 e habilite o console do banco.
  • Crie um JogoRepository usando JpaRepository.
  • Crie pelo menos um endpoint POST /jogos para cadastrar um jogo.
  • Crie pelo menos um endpoint GET /jogos para listar todos os jogos.
  • Crie pelo menos um endpoint GET /jogos/{id} para buscar um jogo por identificador.
  • Código-fonte da aplicação.
  • Prints ou testes mostrando inserção e consulta de dados persistidos.

Refatore a API do exercício anterior para que ela não exponha a entidade Jogo diretamente nos endpoints.

  • Crie um DTO de entrada chamado JogoRequestDTO.
  • Crie um DTO de saída chamado JogoResponseDTO.
  • O DTO de entrada deve conter apenas os dados necessários para cadastro.
  • O DTO de saída deve conter os dados retornados ao cliente.
  • Atualize o POST /jogos para receber JogoRequestDTO.
  • Atualize o GET /jogos e o GET /jogos/{id} para retornar JogoResponseDTO.

Implemente a conversão entre entidade e DTO na aplicação de jogos.

  • Crie uma classe responsável pelo mapping, como JogoMapper.
  • Implemente um método para converter JogoRequestDTO em Jogo.
  • Implemente um método para converter Jogo em JogoResponseDTO.
  • Use esse mapper dentro da camada de service.
  • Garanta que o controller trabalhe apenas com DTOs.

Adicione um novo atributo disponivel na entidade e decida se ele deve ou não aparecer no DTO de resposta. Justifique sua escolha.