Skip to content

Trabalho prático da disciplina de Linguagem de Programação II do CEFET-MG, voltado ao uso do framework SpringBoot integrado a Java.

Notifications You must be signed in to change notification settings

IzabelaAAndrade/Spring-Boot-LPII

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

Trabalho Prático: Spring Boot Java

Trabalho prático da disciplina de Linguagem de Programação II do CEFET-MG, voltado ao uso do framework SpringBoot integrado a Java. Atividade feita utilizando como referência o curso de Spring Boot de Autoria de Michelli Brito.

Resultados

Os resultados foram positivos, condizentes com aquilo que era esperado tendo em vista o tutorial utilizado como base de estudos.

Questionário do dia 09/12/21

As configurações iniciais do projeto foram feitas e concluídas com sucesso, permitindo a criação da tabela associada à prática em um banco de dados MySQL.
image

Questionário do dia 16/12/21

Persistência no Banco de Dados

Dando continuidade ao projeto em desenvolvimento, inicialmente é feita a configuração para a persistência de dados no banco previamente criado, usando uma interface a qual extendia a classe "CrudRepository", da qual se utilizou o método "save". O armazenamento dos dados de um evento de teste ocorreu corretamente, conforme exposto na figura a seguir. image

Busca e Exibição de dados do Banco

Em sequência, é feita uma busca no banco de dados também utilizando métodos da interface que estende CrudRepository, de modo a recolher todos os eventos salvos no banco de dados e realizar sua listagem. Para tanto, cria-se na view 'index.html' a extrutura necessária para a passagem dos parâmetros dos eventos e sua exibição. Na classe "EventoController", cria-se uma função "listarEventos" a qual utilizando do método findAll() armazena um array de eventos cadastrados. Esse iterable é passado para a view mencionada usando de uma instância da classe "ModelAndView". Os resultados foram satisfatórios, atendendo às expectativas, conforme ilustrado abaixo.
image

Ajustes com Materialize CSS

Como última atividade realizada neste questionário, tem-se o ajuste das páginas HTML em Templates para que as mesmas possuam um layout mais agradável. O processo é feito com o acréscimo do diretório "Materialize" no diretório "Static" em resources, tal como a adaptação dos arquivos para se ajustarem ao framework. O resultado é exibido abaixo. image

Questionário do dia 06/01/22

Ajustes com Materialize CSS - Contêiners

De modo a tornar o CSS das páginas anteriormente desenvolvidas ainda mais harmônico, são utilizadas classes já prontas do Materialize CSS as quais delimitam contêiners dentro dos quais as tabelas e formulários já apresentados foram inseridos para não ficarem tão próximos às margens das páginas. O resultado é apresentado em sequência. image

Criando Links Para a Página de Cada Evento

No sistema em desenvolvimento, é importante ter acesso à página individual de cada evento, a qual conterá detalhes do mesmo, além de uma lista com os seus convidados. De modo a criar e acessar tais páginas de maneira automatizada e efetiva são feitas requisições no EventoController usando uma variável do tipo @PathVariable. Utiliza-se também de urls mvc automatizadas associadas à função implementada no Controller mencionado. O resultado é exposto nas figuras adiante. image image

Criando a Entidade Convidado e a Relacionando com Evento

Conforme mencionado no item anterior, os eventos cadastrados no sistema devem possuir uma lista de convidados. Esta deve conter instâncias de convidados, cada qual com nome e RG. De modo a representar estes indivíduos no código, é criada a classe Convidado, a qual tem a notação @Entity de modo a ser identificada como uma tabela no banco de dados, sendo o RG a chave primária (ID) da mesma. De modo a associar a entidade em questão com a entidade evento, são criadas dois objetos, um na classe Convidado, do tipo evento, o qual é identificado com a notação @ManyToOne, e outro na classe Evento, que corresponde a uma lista do tipo convidado a qual é classificada como @OneToMany. A primeira notação identifica que existem vários convidados associados à um só evento, ao passo que a segunda demonstra que existe um evento com muitos convidados. A tabela criada é apresentada abaixo. image

Com a tabela e os relacionamentos devidamente estruturados, é criado um formulário para o recebimento dos dados de RG e Nome dos convidados na página do evento, conforme mostrado pela figura. image

Questionário 13/01/2022

Inserção dos Convidados no BD

Uma vez criado o formulário de inserção de convidados no Banco de Dados, sua inserção propriamente dita pode ser feita utilizando uma instância de uma interface que extende a classe CrudRepository, de maneira bastante similar ao que foi feito durante o cadastramento de eventos. A interface criada é a ConvidadoRepository, a qual tem a instância cr no EventoaController. Cria-se uma requisição associada ao código do evento e o convidado, passados por post. Através do código, utiliza-se a função findByCodigo para encontrar o evento desejado. Através da função setEvento(), o evento em questão é vinculado ao convidado recebido por parâmetro. Por fim, usa-se a instância cr para efetivar o salvamento no banco. O resultado é exposto em sequência. image

Exibição da Lista de Convidados

Conforme descrito no item anterior, os convidados já estão sendo adicionados ao banco de dados além de associados à diferentes eventos. De modo a fazer a exibição da lista associada à cada evento, utiliza-se de uma metodologia similar àquela usada na exibição de eventos. Inicialmente, cria-se uma função denominada findByEvento na interface ConvidadoRepository, a qual recebe um evento como parâmetro e retorna uma lista iterável de convidados. A lista retornada é armazenada no EventoController e então adicionada à view através do método addObject da instância ModelAndView utilizada. A lista é então recebida no template em uso e exibida através de configurações feitas usando divs e spans. O resultado é apresentado em sequência. image

Verificação dos Campos de Cadastro de Convidado e Evento

Embora o cadastro de eventos e convidados esteja ocorrendo de maneira satisfatória, percebe-se que caso se tente cadastrar algo com um dos campos vazios, a inserção no banco de dados acontece sem problemas, algo que não deveria ser feito. De modo a corrigir tal falha, modificaremos um pouco as funções associadas aos formulários, inserindo a anotação @valid nos campos que precisam ser verificados. Ademais, nas entidades, colocaremos os campos como @NotBlanck, indicando que o dado a ser inserido não pode ser nulo e precisa ter tamanho maior do que zero. Adicionamos ainda nas funções os "BindingResults" que indicarão a existência de erros e os "ReddirectAttributes" que indicarão as mensagens de retorno. Conforme a ausência ou presença de erros, é retornada uma mensagem de sucesso ou erro à View em cheque. Os resultados são expostos abaixo.

Convidados:

image image

Eventos:

image image

Conexão Com BD - Observação Útil à prática do dia 09/12

A conexão com o banco de dados pode ser passar por problemas devido ao período de tempo passado após o lançamento do vídeo, logo, podem ser implementadas as soluções descritas nos comentários abaixo.
image
image

About

Trabalho prático da disciplina de Linguagem de Programação II do CEFET-MG, voltado ao uso do framework SpringBoot integrado a Java.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published