Fase 3 – Persistência de Dados e Streams (2–3 meses)
SQL Básico
- DDL:
CREATE
,ALTER
. - DML:
SELECT
,INSERT
,UPDATE
,DELETE
. - Joins:
INNER
,LEFT
,RIGHT
. - Chaves: primárias e estrangeiras.
- Normalização: 1NF, 2NF, 3NF.
- Exemplo: criar tabelas para produtos e categorias.
JDBC e Connection Pool
- Classes:
Connection
,Statement
,PreparedStatement
,ResultSet
. - Uso de Connection Pool (HikariCP).
- Boas práticas:
try-with-resources
, tratamento deSQLException
.
Hibernate + JPA na Prática
- Anotações:
@Entity
,@Id
,@ManyToOne
,@OneToMany
. - Configuração:
persistence.xml
ouapplication.properties
. - Operações CRUD com
EntityManager
. - Introdução a migrações de banco com Flyway ou Liquibase
Introdução a Bancos NoSQL
- Conceitos: documentos, coleções, escalabilidade horizontal.
- MongoDB: configuração, operações CRUD com MongoRepository.
- Spring Data MongoDB: integração com Spring Boot.
- Exemplo: armazenar logs de atividades do sistema de produtos em MongoDB.
Streams e Lambda Expressions
- Operações:
filter
,map
,sorted
,collect
,forEach
,reduce
. - Exemplo: filtrar produtos por preço, ordenar por nome.
Optional e Functional Interfaces
Optional
:orElse
,ifPresent
,orElseThrow
.- Interfaces funcionais:
Function
,Predicate
,Consumer
. - Exemplo: usar
Predicate
em Streams para filtrar dados.
Collections Avançadas
- LinkedList: inserção/remoção eficiente.
- TreeMap: chave-valor ordenado.
- PriorityQueue: fila de prioridade.
- LinkedHashMap e Deque (introdução).
Logging (SLF4J/Logback)
- Configuração de SLF4J com Logback.
- Níveis:
INFO
,DEBUG
,ERROR
. - Exemplo: log de queries do Hibernate.
Conceitos de Transações (ACID)
- Atomicidade, Consistência, Isolamento, Durabilidade.
- Transações com JDBC (
commit
,rollback
) e Hibernate (@Transactional
).
Índices e Planos de Execução
- Índices: primários, únicos, compostos.
- Uso de EXPLAIN para otimizar queries.
- Exemplo: criar índice em coluna de busca frequente.
Manipulação de Arquivos (Opcional)
- Leitura e escrita com
Files
,BufferedReader
. - Exemplo: exportar relatório de produtos para CSV usando Streams.
Testes com Banco de Dados (Introdução)
- Testes de integração com H2 e JUnit.
- Exemplo: testar operação CRUD com Hibernate.
Projeto Final
Sistema de Gerenciamento de Produtos
- Banco: tabelas Produto e Categoria (relacionamento 1:N).
- Java: classes com JPA (Produto
, Categoria
), CRUD com Hibernate.
- Opcional: armazenar logs de alterações de produtos em MongoDB.
- Opcional: armazenar atributos dinâmicos de produtos (ex.: especificações técnicas) em MongoDB.
- Streams: filtrar/ordenar produtos (ex.: por preço ou categoria).
- Logging: monitorar operações no banco.
- Git: commit por funcionalidade (ex.: feature/crud
, feature/streams
).
- Publicar no GitHub com README explicativo.