https://github.com/jvictornascimento/workshop-spring-boot-mongodb
Compreender as principais diferenças entre paradigma orientado a documentos e relacional
https://github.com/jvictornascimento/workshop-spring-boot-mongodb
docker dockerhub java17 maven mongodb spring-boot
Last synced: 3 months ago
JSON representation
Compreender as principais diferenças entre paradigma orientado a documentos e relacional
- Host: GitHub
- URL: https://github.com/jvictornascimento/workshop-spring-boot-mongodb
- Owner: jvictornascimento
- Created: 2023-12-08T01:44:34.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-01-05T14:54:32.000Z (over 1 year ago)
- Last Synced: 2025-01-21T12:13:22.445Z (over 1 year ago)
- Topics: docker, dockerhub, java17, maven, mongodb, spring-boot
- Language: Java
- Homepage:
- Size: 87.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Projeto MongoDB com Spring Boot




## Resumo do projeto
#### Curso: Programação Orientada a Objetos com Java
#### http://educandoweb.com.br
#### 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**.
```[json
{
"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**.
```[json
{
"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**.
```[json
{
"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**.
```[json
[
{
"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**.
```[json
{
"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**.
```[json
{
"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**.
````[json
{
"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](https://github.com/jvictornascimento/workshop-spring-boot-mongodb/blob/master/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
## Tecnologias
- `Intellij`
- `Java 17`
- `Maven`
- `Spring Boot, Spring MVC, Spring Data JPA, Spring Mongo`
- `MongoDb`
- `Docker, Docker-hub`