Skip to content

Compreender as principais diferenças entre paradigma orientado a documentos e relacional

Notifications You must be signed in to change notification settings

jvictornascimento/workshop-spring-boot-mongodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto MongoDB com Spring Boot

Badge Concluído Badge Java Badge Spring Badge MongoDb

Resumo do projeto

Curso: Programação Orientada a Objetos com Java

Prof. Dr. Nelio Alves

  • Compreender as principais diferenças entre paradigma orientado a documentos e relacional
  • Implementar operações de CRUD
  • Refletir sobre decisões de design para um banco de dados orientado a documentos
  • Implementar associações entre objetos
    • Objetos aninhados
    • Referências
  • Realizar consultas com Spring Data e MongoRepository

Funcionalidades

Usuario

  • Cadastrar: Cadastro de Usuarios através de um POST /users com as informações de name e email do usuario no corpo da requisição. Segue abaixo um exemplo do corpo da requisição.

      {
        "name" : "Lorem Ipsum",
        "email" : "lorem@email.com"
      }
    
  • Atualizar: Atualizar usuario através de um PUT /users/{ID}, onde {ID} é o identificador do usuario, os novos dados do usuario devem ser enviados no corpo da requisição. Segue abaixo um exemplo do corpo da requisição.

      {
        "name" : "Lorem Ipsum",
        "email" : "lorem@email.com"
      }
    
  • Deletar: Deletar usuario através de um DELETE /users/{ID}, onde {ID} é o identificador do usuario.

  • Buscar por id: Busca usuario por id através de um GET /users/{ID}, onde {ID} é o identificador do usuario. Segue abaixo um exemplo do corpo da resposta.

      {
          "id": "6779cf8e2a6bfc616784c4df",
          "name": "Maria fazendeira",
          "email": "maria@email.com"
      }   
    
  • Buscar por todos os usuaios: Busca através de um GET /users, . Segue abaixo um exemplo do corpo da resposta.

           [
               {
                   "id": "6779cf8e2a6bfc616784c4df",
                   "name": "Maria fazendeira",
                   "email": "maria@email.com"
               },
               {
                   "id": "6779cf8e2a6bfc616784c4e0",
                   "name": "jose padeiro",
                   "email": "jose@email.com"
               },
               {
                   "id": "6779cf8e2a6bfc616784c4e1",
                   "name": "antonio leiteiro",
                   "email": "antonio@email.com"
              }
          ]
    

Posts

  • Buscar por id: Busca um post por id através de um GET /post/{ID}, onde {ID} é o identificador do post. Segue abaixo um exemplo do corpo da resposta.

        {
        "id": "677a989fea0a620c5f0f8fa5",
        "date": "2018-03-23T00:00:00.000+00:00",
        "title": "Bom dia ",
        "body": "Acordei feliz hoje!",
         "author": {
            "id": "677a989fea0a620c5f0f8fa2",
            "name": "Maria fazendeira"
        },
        "comments": [
          {
            "text": "Aproveite",
            "date": "2018-03-22T00:00:00.000+00:00",
            "author": {
              "id": "677a989fea0a620c5f0f8fa3",
              "name": "jose padeiro"
            } 
          }
         ]
        } 
    
    • Buscar por titulo: Busca um post por palavras contidas no titulo através de um GET /post/titlesearch?text=bom. Segue abaixo um exemplo do corpo da resposta.

        {
        "id": "677a989fea0a620c5f0f8fa5",
        "date": "2018-03-23T00:00:00.000+00:00",
        "title": "Bom dia ",
        "body": "Acordei feliz hoje!",
         "author": {
            "id": "677a989fea0a620c5f0f8fa2",
            "name": "Maria fazendeira"
        },
        "comments": [
          {
            "text": "Aproveite",
            "date": "2018-03-22T00:00:00.000+00:00",
            "author": {
              "id": "677a989fea0a620c5f0f8fa3",
              "name": "jose padeiro"
            } 
          }
         ]
        } 
    
    • Buscar Completa: Busca um post por palavras contidas no titulo, no corpo ou nos comentarios podendo ta,bem filtrar por datas minimas e maximas através de um GET /post/fullsearch?text=viagem. Segue abaixo um exemplo do corpo da resposta.

    {
    "id": "677a989fea0a620c5f0f8fa6",
    "date": "2018-03-21T00:00:00.000+00:00",
    "title": "Partiu Viagem",
    "body": "Vou viajar para São Paulo. Abraços!",
    "author": {
      "id": "677a989fea0a620c5f0f8fa2",
      "name": "Maria fazendeira"
    },
    "comments": [
    {
      "text": "Boa Viagem mano!",
      "date": "2018-03-21T00:00:00.000+00:00",
      "author": {
        "id": "677a989fea0a620c5f0f8fa4",
        "name": "antonio leiteiro"
      }
    },
    {
      "text": "Tenha um otimo dia!",
      "date": "2018-03-23T00:00:00.000+00:00",
      "author": {
        "id": "677a989fea0a620c5f0f8fa4",
        "name": "antonio leiteiro"
           }
          }
        ]
      }
    ]
Obs: esse endpoin pode ser usado **GET /post/fullsearch?text=viagem**, **GET /post/fullsearch?mindate=23-03-2018**, **GET /post/fullsearch?maxdate=23-03-2018** ou **GET /post/fullsearch?text=viagem&mindate=23-03-2018&maxdate=24-03-20218** o resultado sera o mesmo json acima.

Criar container docker da aplicação

Execute este aquivo docker-compose.yaml. Que irá subir um container com uma imagem do mongoDB mais a imagem do projeto.

  docker-compose -f docker-compose.yaml up

Após subir os containers, todas as funcionaliades acima estaram disponivel em http://localhost:8080

Tecnologias

  • Intellij
  • Java 17
  • Maven
  • Spring Boot, Spring MVC, Spring Data JPA, Spring Mongo
  • MongoDb
  • Docker, Docker-hub

About

Compreender as principais diferenças entre paradigma orientado a documentos e relacional

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published