0% acharam este documento útil (0 voto)
4 visualizações20 páginas

Learn Backend Java

O documento apresenta um roadmap abrangente para aprender backend em Java, começando pelos fundamentos da linguagem até a criação de APIs REST com Spring Boot e integração com bancos de dados como PostgreSQL. Inclui tópicos essenciais como Maven, Git, validação, segurança, testes e deploy, além de recomendações de projetos práticos para reforçar o aprendizado. O guia também discute a escolha entre PostgreSQL e MySQL, destacando suas características e casos de uso.

Enviado por

ylabui.contact
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações20 páginas

Learn Backend Java

O documento apresenta um roadmap abrangente para aprender backend em Java, começando pelos fundamentos da linguagem até a criação de APIs REST com Spring Boot e integração com bancos de dados como PostgreSQL. Inclui tópicos essenciais como Maven, Git, validação, segurança, testes e deploy, além de recomendações de projetos práticos para reforçar o aprendizado. O guia também discute a escolha entre PostgreSQL e MySQL, destacando suas características e casos de uso.

Enviado por

ylabui.contact
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

LEARN BACKEND JAVA

🚀 Roadmap Backend Java (do zero ao avançado)

1️⃣ Fundamentos de Java (ESSENCIAL)

Antes de backend, você precisa pensar em Java.

📌 O que aprender

 Instalação do JDK (Java 17 ou 21)

 Tipos primitivos (int, double, boolean)

 if / else, switch

 Laços (for, while)

 Métodos e funções

 Classes e objetos

 this, static

 Encapsulamento (private, get/set)

 Herança e polimorfismo

 Interfaces

 List, Set, Map

 Exception e try/catch

🎯 Objetivo

Conseguir criar um programa Java sem copiar, entendendo o que está


acontecendo.

2️⃣ Java Orientado a Backend

Aqui começa o mindset backend.

📌 Conceitos

 Pacotes (package)

 Organização de projeto

 Logs (SLF4J / Logback)

 Leitura de arquivos

 Datas (LocalDate, LocalDateTime)

 Boas práticas (SOLID básico)


3️⃣ Maven + Git (indispensável)

Backend sem isso não existe.

📦 Maven

 [Link]

 Dependências

 clean, install, package

🌱 Git

 git init, commit, push

 .gitignore

 GitHub

4️⃣ Spring Boot (A VIRADA DE CHAVE 🔥)

📌 Fundamentos Spring

 Inversão de Controle (IoC)

 Injeção de Dependência

 Anotações:

o @RestController

o @GetMapping, @PostMapping

o @RequestBody, @PathVariable

o @Service, @Repository

🎯 Objetivo

Criar uma API REST que responda JSON.

5️⃣ Banco de Dados (CRUD de verdade)

Backend sem banco é só fachada 😅

📌 Aprender

 SQL básico

 PostgreSQL ou MySQL

 Spring Data JPA

 Hibernate

 Entidades (@Entity)

 Repositórios (JpaRepository)
 Relacionamentos:

o @OneToMany

o @ManyToOne

6️⃣ Validação, Erros e Segurança

Agora fica profissional.

 Bean Validation (@NotNull, @Email)

 Tratamento de erros (@ControllerAdvice)

 HTTP Status corretos

 DTOs

 Spring Security

 JWT (login/autenticação)

7️⃣ Testes e Qualidade

Diferencial forte no mercado.

 JUnit

 Mockito

 Testes de controller

 Testes de serviço

8️⃣ Deploy e Mundo Real

Última fase 💪

 Variáveis de ambiente

 Docker

 Deploy (Railway, Render, VPS)

 Logs em produção

Stack recomendada (iniciante)

 Java 17

 Spring Boot

 Maven

 PostgreSQL
 IntelliJ IDEA

 Postman / Insomnia

📚 Como estudar (jeito inteligente)

⚠️Regra de ouro: menos curso, mais projeto

Projetos para treinar:

1. API de usuários

2. Sistema de tarefas (CRUD)

3. Login + JWT

4. Mini e-commerce

5. API para app mobile

🚀 PASSO 1 — Seu primeiro backend Java (Spring Boot)

🎯 Objetivo deste passo

Criar uma API REST rodando localmente que responde:

[Link]

🧱 Conceito novo (bem rápido)

No Spigot você reage a eventos do servidor.


No backend web, você reage a requisições HTTP.

Exemplo:

 Plugin → PlayerJoinEvent

 Backend → GET /users

Criar o projeto Spring Boot

1️⃣ Acesse o Spring Initializr

👉 [Link]

2️⃣ Configure assim:

 Project: Maven

 Language: Java

 Spring Boot: (deixa o padrão)

 Group: [Link]

 Artifact: backend
 Packaging: Jar

 Java: 17 (ou 21 se preferir)

3️⃣ Dependências (marca só essas):

✔ Spring Web

👉 Clique em Generate e extraia o ZIP

📂 Estrutura do projeto (importante)

Você vai ver algo assim:

backend

└─ src

└─ main

└─ java

└─ [Link]

└─ [Link]

Esse arquivo é tipo o onEnable() do Spring.

▶️Rodar o projeto

No IntelliJ:

 Abre o projeto

 Abre [Link]

 Clica em Run

Se aparecer no console:

Tomcat started on port 8080

🎉 Tá vivo.

🌐 Criando seu primeiro Controller (API)

Crie um pacote:

[Link]

Dentro dele, crie a classe:

package [Link];

import [Link];
import [Link];

@RestController

public class HelloController {

@GetMapping("/hello")

public String hello() {

return "Hello, backend Java!";

🔥 Testando

Abra o navegador ou Postman e vá em:

[Link]

Se aparecer:

Hello, backend Java!

🚀 Você acabou de criar uma API REST em Java.

🧠 Comparando com Spigot (pra fixar)

Spigot Spring Boot

@EventHandler @GetMapping

Listener Controller

application.y
[Link]
ml

onEnable() main()

Serviços Beans do
singleton Spring

⚠️Regra de ouro desde agora

❌ Controller com lógica


✅ Controller → Service → Repository (igual plugin bem feito)
🚀 PASSO 2 — Controller + Service + DTO (JSON de verdade)

🎯 Objetivo

Criar uma rota que:

 Usa Service

 Retorna JSON

 Não deixa lógica no Controller

Exemplo final:

GET /api/hello

→ { "message": "Olá, Gustavo!" }

🧱 Estrutura que vamos usar (padrão profissional)

Crie os pacotes:

[Link]

├─ controller

├─ service

└─ dto

Isso é tipo:

 controller → listener

 service → manager

 dto → objeto de transporte (não é entity)

1️⃣ Criando o DTO

📦 dto/[Link]

package [Link];

public class HelloResponse {

private String message;

public HelloResponse(String message) {

[Link] = message;

}
public String getMessage() {

return message;

👉 Spring vai converter isso automaticamente em JSON (Jackson).

2️⃣ Criando o Service

📦 service/[Link]

package [Link];

import [Link];

@Service

public class HelloService {

public String getHelloMessage() {

return "Olá, Gustavo! Backend Java ativo 🚀";

🔎 @Service = Bean gerenciado pelo Spring (construtor singleton, igual service no


plugin).

3️⃣ Atualizando o Controller

📦 controller/[Link]

package [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];
@RestController

@RequestMapping("/api")

public class HelloController {

private final HelloService helloService;

public HelloController(HelloService helloService) {

[Link] = helloService;

@GetMapping("/hello")

public HelloResponse hello() {

String message = [Link]();

return new HelloResponse(message);

💡 Injeção por construtor → padrão profissional (nada de @Autowired no campo).

🔥 Teste

Acesse:

[Link]

Resposta esperada:

"message": "Olá, Gustavo! Backend Java ativo 🚀"

🧠 O que você acabou de aprender (importante)

✔ Arquitetura em camadas
✔ Injeção de dependência
✔ DTO
✔ Retorno JSON
✔ URL versionável (/api)

Isso já é nível backend real.


⚠️Regra que vai te salvar no futuro

 ❌ Entity ≠ DTO

 ❌ Controller ≠ lógica

 ✅ Service = regra de negócio

🐘 PostgreSQL vs 🐬 MySQL — quando usar cada um

🐘 PostgreSQL (o “engenheiro”)

Use quando você quer robustez, regras e consistência.

✅ Pontos fortes

 Muito forte em integridade dos dados

 Tipos avançados:

o JSON / JSONB

o UUID

o ARRAY

 Queries complexas (JOIN pesado, subqueries)

 Melhor suporte a transações complexas

 Muito usado em:

o Fintechs

o SaaS

o Sistemas críticos

 Comunidade forte no mundo Java + Spring

❌ Pontos fracos

 Um pouco mais “chato” de configurar

 Pode consumir um pouco mais de recurso

🧠 Quando escolher PostgreSQL

✔ Backend sério
✔ Muitos relacionamentos
✔ Regras de negócio complexas
✔ Crescimento futuro
✔ APIs modernas (inclusive com JSON no banco)

🐬 MySQL (o “rápido e simples”)

Use quando quer simplicidade e velocidade.

✅ Pontos fortes
 Fácil de configurar

 Muito popular (hosting barato)

 Ótimo pra:

o CRUD simples

o Sistemas pequenos/médios

 Bastante usado em:

o Sites

o Sistemas legados

o PHP (mas não só)

❌ Pontos fracos

 Menos recursos avançados

 Menos rigor com integridade (depende da config)

 Queries complexas ficam mais limitadas

🧠 Quando escolher MySQL

✔ Projetos simples
✔ Aprendizado inicial
✔ CRUD clássico
✔ Infra barata

⚔️Comparação direta

Critério PostgreSQL MySQL

Integridade ⭐⭐⭐⭐⭐ ⭐⭐⭐

Queries
⭐⭐⭐⭐⭐ ⭐⭐⭐
complexas

JSON no banco ⭐⭐⭐⭐⭐ ⭐⭐

Facilidade ⭐⭐⭐ ⭐⭐⭐⭐⭐

Spring Boot ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐

Escalabilidade ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐

🎯 Recomendação honesta pra VOCÊ

Considerando que você:

 já programa Java

 quer backend profissional


 pensa em sistemas maiores

👉 PostgreSQL é a melhor escolha 💪

Você aprende:

 SQL de verdade

 Tipos modernos

 Padrões usados em empresas

MySQL você pega depois em uma semana se precisar.

🚀 PASSO 3 — Spring Boot + PostgreSQL + JPA

🎯 Objetivo

Criar um CRUD de usuários:

 Entity

 Repository

 Service

 Controller

 Salvar e buscar no PostgreSQL

🐘 1️⃣ Subindo o PostgreSQL (rápido)

Opção A — Docker (recomendado)

Se tiver Docker instalado, roda no PowerShell:

docker run --name postgres-backend ^

-e POSTGRES_DB=backend ^

-e POSTGRES_USER=postgres ^

-e POSTGRES_PASSWORD=123456 ^

-p 5432:5432 ^

-d postgres

Se não tiver Docker, me avisa que te guio pela instalação normal.

📦 2️⃣ Dependências no [Link]

Adicione dentro de <dependencies>:

<dependency>

<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>[Link]</groupId>

<artifactId>postgresql</artifactId>

<scope>runtime</scope>

</dependency>

👉 Dá Reload Maven no IntelliJ.

⚙️3️⃣ Configurando o banco

📄 src/main/resources/[Link]

spring:

datasource:

url: jdbc:postgresql://localhost:5432/backend

username: postgres

password: 123456

jpa:

hibernate:

ddl-auto: update

show-sql: true

properties:

hibernate:

format_sql: true

💡 ddl-auto: update cria/atualiza tabelas automaticamente (dev only).

🧱 4️⃣ Criando a Entity (User)

📦 entity/[Link]

package [Link];

import [Link].*;
@Entity

@Table(name = "users")

public class User {

@Id

@GeneratedValue(strategy = [Link])

private Long id;

@Column(nullable = false)

private String name;

@Column(nullable = false, unique = true)

private String email;

protected User() {}

public User(String name, String email) {

[Link] = name;

[Link] = email;

public Long getId() {

return id;

public String getName() {

return name;

public String getEmail() {

return email;

}
}

🔎 Construtor protegido = padrão JPA.

5️⃣ Repository

📦 repository/[Link]

package [Link];

import [Link];

import [Link];

public interface UserRepository extends JpaRepository<User, Long> {

Sem implementação. Spring faz a mágica ✨

🧠 6️⃣ Service (regra de negócio)

📦 service/[Link]

package [Link];

import [Link];

import [Link];

import [Link];

import [Link];

@Service

public class UserService {

private final UserRepository repository;

public UserService(UserRepository repository) {

[Link] = repository;

}
public User create(String name, String email) {

User user = new User(name, email);

return [Link](user);

public List<User> findAll() {

return [Link]();

🌐 7️⃣ Controller (CRUD)

📦 controller/[Link]

package [Link];

import [Link];

import [Link];

import [Link].*;

import [Link];

import [Link];

@RestController

@RequestMapping("/api/users")

public class UserController {

private final UserService service;

public UserController(UserService service) {

[Link] = service;

@PostMapping
public User create(@RequestBody Map<String, String> body) {

return [Link]([Link]("name"), [Link]("email"));

@GetMapping

public List<User> list() {

return [Link]();

⚠️DTO vamos refinar no próximo passo — aqui é foco em fluxo.

🧪 8️⃣ Testando no Postman

POST

POST [Link]

Body (JSON):

"name": "Gustavo",

"email": "gustavo@[Link]"

GET

GET [Link]

🧠 O que você acabou de aprender

✔ JPA + Hibernate
✔ Entity
✔ Repository
✔ CRUD
✔ PostgreSQL integrado
✔ Backend profissional real

Você já passou do nível iniciante 👊

⚠️Aviso importante (muito mercado)

❌ Não exponha Entity direto em produção


❌ Não use Map em controller final
✅ DTO + validação
🐳 Docker no Windows — guia prático

1️⃣ Instalar Docker Desktop (Windows)

Requisitos

✔ Windows 10/11
✔ Virtualização ativada na BIOS
✔ WSL2 (o Docker instala sozinho)

Passo a passo

1. Baixe:
👉 [Link]

2. Instale normalmente

3. Durante a instalação, marque:

o ✔ Use WSL 2

4. Reinicie o PC

2️⃣ Verificar se está funcionando

Abra PowerShell e rode:

docker --version

Se aparecer algo tipo:

Docker version 26.x.x

✔ OK

Teste rápido:

docker run hello-world

Se aparecer mensagem de sucesso → Docker tá vivo 🐳🔥

3️⃣ Conceitos essenciais (bem rápido)

Conceit
O que é
o

Template (tipo
Image
JAR)

Containe Instância
r rodando

Dockerfil Receita da
e imagem

Volume Dados
Conceit
O que é
o

persistentes

Port Porta exposta

4️⃣ Subindo PostgreSQL com Docker (jeito certo)

Vamos subir Postgres com persistência (dados não somem).

docker run --name postgres-backend ^

-e POSTGRES_DB=backend ^

-e POSTGRES_USER=postgres ^

-e POSTGRES_PASSWORD=123456 ^

-p 5432:5432 ^

-v postgres_data:/var/lib/postgresql/data ^

-d postgres

O que isso faz

 Cria banco backend

 User postgres

 Senha 123456

 Porta 5432

 Volume persistente (postgres_data)

5️⃣ Comandos Docker que você VAI usar sempre

Ver containers rodando

docker ps

Ver todos (inclusive parados)

docker ps -a

Parar container

docker stop postgres-backend

Iniciar novamente

docker start postgres-backend

Apagar container

docker rm postgres-backend

Apagar volume (⚠️perde dados)


docker volume rm postgres_data

6️⃣ Acessar o PostgreSQL

Opção A — Terminal

docker exec -it postgres-backend psql -U postgres -d backend

Opção B — IntelliJ (recomendado)

 Database → PostgreSQL

 Host: localhost

 Port: 5432

 User: postgres

 Password: 123456

 DB: backend

7️⃣ Erros comuns (e solução)

❌ Docker não inicia

✔ Virtualização desativada → ativar na BIOS

❌ Porta 5432 ocupada

netstat -ano | findstr 5432

Ou mude:

-p 5433:5432

E no Spring:

url: jdbc:postgresql://localhost:5433/backend

8️⃣ Próximo nível (spoiler 👀)

No próximo passo vamos:

 Criar Dockerfile do backend Java

 Subir API + Postgres juntos

 Usar docker-compose

👉 Isso é nível backend profissional.

Você também pode gostar