An open API service indexing awesome lists of open source software.

https://github.com/j-adenilson/cadastro-java-springboot

Projeto cadastro de funcionários em Java com Spring Boot
https://github.com/j-adenilson/cadastro-java-springboot

api api-rest docker docker-compose flyway h2-database java jpa-hibernate maven spring-data-jpa springboot sql swagger

Last synced: about 1 month ago
JSON representation

Projeto cadastro de funcionários em Java com Spring Boot

Awesome Lists containing this project

README

          

# Cadastro de Funcionários

Aplicação de exemplo para cadastro e gestão de departamentos e funcionários desenvolvida em Java com Spring Boot. O projeto utiliza arquitetura MVC, com camadas de controllers, serviços e repositórios, além de mapeamentos DTO para separar domínio e apresentação.

## 📦 Tecnologias

- **Linguagem:** Java 17
- **Framework:** Spring Boot 3.5.8
- **Camadas:** Spring MVC (controllers, services, repositories)
- **Persistência:** Spring Data JPA
- **Banco de dados:** H2 (desenvolvimento/in-memory) e PostgreSQL (runtime)
- **Migrações:** Flyway
- **Template Engine:** Thymeleaf
- **API Documentation:** springdoc-openapi (Swagger UI)
- **Lombok:** redução de boilerplate (getters/setters, constructors)
- **Build:** Maven (`mvnw` wrapper incluído)

## 🏗️ Arquitetura e Estrutura de Código

O pacote base é `com.cadastro.CadastroDeFuncionarios`. A organização segue a convenção de camadas:

```
com.cadastro.CadastroDeFuncionarios
├─ Departamentos
│ ├─ DepartamentosController.java (API REST)
│ ├─ DepartamentosControllerUi.java (UI com Thymeleaf)
│ ├─ DepartamentosService.java (lógica de negócio)
│ ├─ DepartamentosRepository.java (interface JPA)
│ ├─ DepartamentosModel.java (entidade/JPA)
│ ├─ DepartamentosDTO.java (objeto de transferência)
│ └─ DepartamentosMapper.java (mapstruct ou manual mapeamento)
├─ Funcionarios
│ ├─ FuncionariosController.java
│ ├─ FuncionariosControllerUi.java
│ ├─ FuncionariosService.java
│ ├─ FuncionariosRepository.java
│ ├─ FuncionariosModel.java
│ ├─ FuncionariosDTO.java
│ └─ FuncionariosMapper.java
└─ CadastroDeFuncionariosApplication.java (ponto de entrada)
```

- **Controllers**: expõem endpoints REST e páginas Thymeleaf
- **Services**: regras comerciais e orquestração entre repositórios
- **Repositories**: abstraem acesso ao BD com Spring Data JPA
- **Models**: entidades mapeadas para tabelas
- **DTOs/Mappers**: decouple dos modelos de domínio para transferência de dados

## 🚀 Configuração e Execução

1. **Pré-requisitos**
- Java 17 instalado
- Docker (opcional, para PostgreSQL)

2. **Banco de dados**
- O projeto usa H2 em memória por padrão (configuração em `application.properties`).
- Para PostgreSQL, ajuste as propriedades `spring.datasource.url`, `username` e `password`.
- As migrações Flyway ficam em `src/main/resources/db/migrations`.

3. **Build & Run**
```bash
./mvnw clean package
java -jar target/cadastroDeFuncionarios-0.0.1-SNAPSHOT.jar
```

4. **Acesso**
- Interface web: `http://localhost:8080` (páginas Thymeleaf para listar/cadastrar/editar)
- API Swagger: `http://localhost:8080/swagger-ui.html` ou `/swagger-ui/index.html`

## 🛠️ Tools adicionais

- **Flyway**: executa migrações SQL automaticamente na inicialização
- **Lombok**: anotação `@Data`, `@Builder` etc., certifique-se de instalar plugin no IDE

## 📁 Recursos do projeto

- `docker-compose.yml`: configura serviço PostgreSQL (opcional)
- `src/main/resources/static/css/style.css`: estilos básicos
- Templates HTML em `templates/`
- Migrações SQL em `resources/db/migrations`

## 🧪 Testes

O único teste de exemplo está em `src/test/java/com/cadastro/CadastroDeFuncionarios/CadastroDeFuncionariosApplicationTests.java`.

## 📌 Notas

- Arquitetura simples voltada para aprendizado e prototipagem.
- Pode ser estendido com autenticação, validações mais robustas e camadas de DTO adicionais.

---

*Projeto criado e mantido por [José Adenilson]*