Skip to content

Latest commit

 

History

History
135 lines (107 loc) · 4.76 KB

README.md

File metadata and controls

135 lines (107 loc) · 4.76 KB

API Spring com MongoDB

Feito com

  • Java
  • Spring
  • Apache Tomcat
  • Maven
  • Postman
  • MongoDB
  • Eclipse
  • Git

Projeto Back-end

Projeto foi parte do curso de back-end com Java e Spring

Objetivos estudados com o projeto:

  • 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

Camadas Lógicas

Screenshot 2024-07-12 204032

Instância de Domínio

Screenshot 2024-07-12 204338

Modelo de Domínio

Screenshot 2024-07-12 204548

Important

A seguir terá a explicação de como se chegou neste modelo de domínio.

Se neste projeto fosse utilizado um banco de dados relacional o modelo de domínio ficaria como a imagem a seguir:

Screenshot 2024-07-12 205349

E para fazer consulta, considerando que houvesse muitos dados, a recuperação dos dados aconteceria conforme o exemplo a seguir:

Screenshot 2024-07-12 205631

Assim na implementação dos objetos, as associações entre objetos, seriam feitas por referências dos ponteiros, e para se fazer as consultas, considerando uma base de dados grande, as consultas iriam requer muito recurso, tornando as consultas lentas.

Note

Mais sobre a diferença entre bancos de dados relacionais e não relacionais, neste PDF: SQL ou NoSQL.

  • Fonte: Prof. Dr. Nelio Alves

Logo foi decidido por implementar, conforme a primeira imagem, onde as consultas, considerando uma base de dados grande, iriam requerir menos recursos, mesmo que pra isso seja necessário haver a desnomalização dos dados.

Tip

A seguir, a forma que foi implementado.

Da forma que foi implementado, optando por escolhe um banco de dados não relacional, as consultas realizadas trazem os dados conforme o exemplo a seguir:

{
  "id": "1001",
  "name": "Maria Brown",
  "email": "maria@gmail.com",
  "posts": ["5001", "5010"]
}

{
  "id": "5001",
  "date": "2018-03-21",
  "title": "Partiu viagem",
  "body": "Vou viajar para São Paulo. Abraços!",
  "author": {
    "id": "1001",
    "name": "Maria Brown"
  },
  "comments": [
    {
      "text": "Boa viagem mano!",
      "date": "2018-03-21",
      "author": {
        "id": "1013",
        "name": "Alex Green"
      }
    },
    {
      "text": "Aproveite!",
      "date": "2018-03-22",
      "author": {
        "id": "1027",
        "name": "Bob Grey"
      }
    }
  ]
}

{
  "id": "5010",
  "date": "2018-03-23",
  "title": "Bom dia",
  "body": "Acordei feliz hoje!",
  "author": {
    "id": "1001",
    "name": "Maria Brown"
  },
  "comments": [
    {
      "text": "Tenha um ótimo dia!",
      "date": "2018-03-23",
      "author": {
        "id": "1013",
        "name": "Alex Green"
      }
    }
  ]
}

Projeto foi parte do curso de back-end com Java e Spring

Referências: