CodeGym /Cursos Java /All lectures for PT purposes /Projeto relacionado: Hibernate (2)

Projeto relacionado: Hibernate (2)

All lectures for PT purposes
Nível 1 , Lição 104
Disponível

Hoje nossa tarefa é concluir o segundo projeto no tópico Hibernate. Sua essência é entender a estrutura do banco de dados, mapear a entidade para as tabelas existentes e adicionar a funcionalidade mínima para verificar se o mapeamento é feito corretamente.

Agora com mais detalhes:

  1. Baixe o arquivo de despejo e implante-o em sua máquina local. Como banco de dados, usaremos um banco de dados de teste, que é distribuído como exemplo junto com o pacote de instalação do MySQL. O dump é necessário para corrigir o estado do banco de dados, pois não podemos garantir que não mudará em um dia, mês, ano.
  2. Não teremos um modelo de projeto, então crie você mesmo o projeto. Deve ser um projeto maven com todas as dependências necessárias ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
  3. Conecte nosso banco de dados implantado localmente como uma fonte de dados no Idea. Em seguida, na aba Banco de dados, coloque o cursor sobre o esquema do filme e pressione a combinação de teclas Alt+Ctrl+Shift+U(só funciona na versão Ultimate). Isso mostrará a estrutura de todo o esquema do filme (com nomes de colunas, chaves, etc.). Se parece com isso:

    Concordo, não é muito confortável de assistir. Desative a exibição do título de todas as colunas e comentários:

    Como resultado, você obterá um esquema de banco de dados que já pode ser analisado:

  4. O circuito parece complicado, mas nem tudo é tão ruim assim. Para analisar a estrutura do banco de dados, você precisa saber por onde começar. Não existe uma única resposta correta, mas eu recomendaria começar com uma tabela film. Vamos pegar alguns relacionamentos como exemplo:
    • A relação entre tabelas filme film_texté uma relação OneToOne explícita , porque a tabela film_texttem um campo film_idqueNÃOrefere-se a um ID de uma tabela film(sem chave estrangeira). Mas pelo nome e pela lógica, essa conexão deveria ser. Além disso, na tabela, film_texto campo film_idfunciona como uma chave primária, o que garante que um "filme" não corresponda a mais de um "texto de filme".
    • Agora vamos ver tabelas filme arquivos category. Logicamente, um filme pode ter várias categorias. E uma categoria, talvez filmes diferentes. Além disso, existe uma tabela de ligação intermediária entre essas duas tabelas film_category. Com base em tudo o que foi dito acima, esse é um relacionamento explícito de ManyToMany .
    • Nós olhamos para as tabelas filme language. Do ponto de vista da lógica, o filme pode ter tradução para diferentes idiomas e diferentes filmes podem estar no mesmo idioma. Ou seja, ManyToMany sugere a si mesmo . Mas se olharmos para o conteúdo da tabela film, podemos ver que cada linha da tabela é um filme único. E há apenas um campo language_id na linha (também há original_language_id, mas em todos os registros é nulo, então podemos ignorá-lo). Ou seja, um filme só pode ter uma linguagem. E uma língua, talvez filmes diferentes. A conexão é ManyToOne (a conexão é direcionada do filme para a linguagem).
  5. Agora, a tarefa principal é criar todas as classes de entidade necessárias e mapeá-las nas tabelas de esquema movie.
  6. Adicione um método que possa criar um novo cliente (tabela de clientes) com todos os campos dependentes. Não se esqueça de tornar o método transacional (para não cair na situação de o endereço do comprador estar registrado no banco de dados, mas o próprio comprador não).
  7. Adicione um método transacional que descreva o evento "o cliente foi e devolveu um filme alugado anteriormente". Escolha qualquer comprador e evento de aluguel de sua escolha. A classificação do filme não precisa ser recalculada.
  8. Adicione um método transacional que descreva o evento “o comprador foi à loja (loja) e alugou (aluguel) estoque (estoque) lá. Ao mesmo tempo, ele fez um pagamento (pagamento) ao vendedor (funcionários). Filme (por meio de inventário) escolha a seu critério. A única restrição é que o filme deve estar disponível para aluguel. Ou seja, não deve haver nenhum registro de estoque no aluguel, ou a coluna return_date da tabela rentalpara o último aluguel desse estoque deve ser preenchida.
  9. Adicione um método transacional que descreva o evento "um novo filme foi filmado e ficou disponível para aluguel". Filme, idioma, atores, categorias, etc., escolha a seu critério.
  10. A estrutura da tabela não pode ser alterada. Mas você precisa fazer sugestões de melhoria. Identificamos um local problemático no parágrafo 4 (ausência de chave estrangeira na tabela film_textno campo da film_idtabela film). Veja se ainda existem tais “erros” na estrutura do banco de dados. Nesse caso, adicione um arquivo leia-me à raiz do projeto e descreva esses erros.

Análise do projeto:

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION