Projeto foi parte do curso de back-end com Java e Spring
- Prof. Dr. Nelio Alves
- http://educandoweb.com.br
- 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
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:
E para fazer consulta, considerando que houvesse muitos dados, a recuperação dos dados aconteceria conforme o exemplo a seguir:
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
- Prof. Dr. Nelio Alves
- http://educandoweb.com.br
- https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
- https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-nosql.html
- https://stackoverflow.com/questions/38921414/mongodb-what-are-the-default-user-and-password
- https://pt.stackoverflow.com/questions/31362/o-que-é-um-dto