Created
September 24, 2025 07:07
-
-
Save andersonbuenos/5aa669bcc0508696a76047e713bb7a34 to your computer and use it in GitHub Desktop.
Encontro 02 - Teste e Validação
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ## 1. O que é o banco H2? | |
| O **H2 Database** é um banco de dados relacional **open source** escrito em Java. Ele é leve, rápido e pode rodar **em memória** (para testes) ou em **arquivo** (persistência local). | |
| Características principais: | |
| * 100% Java, sem necessidade de instalar servidor externo. | |
| * Modo **in-memory** (ideal para testes unitários). | |
| * Compatível com **JPA/Hibernate**, JDBC e Spring Boot. | |
| * Fácil integração: basta adicionar uma dependência no `pom.xml`. | |
| --- | |
| ## 2. Por que usar o H2 neste projeto? | |
| O projeto **delivery-tech** é um **Spring Boot com Maven**. | |
| Motivos para usar o H2: | |
| * **Testes automatizados**: permite rodar os testes de repositório sem depender de um banco externo (MySQL/Postgres). | |
| * **Ambiente de desenvolvimento**: rápido para prototipar e validar queries JPA. | |
| * **Integração com Spring Boot**: o Spring cria automaticamente as tabelas a partir das entidades (`@Entity`). | |
| * **Console web embutido**: facilita visualizar e debugar dados (em `http://localhost:8080/h2-console`). | |
| --- | |
| ## 3. Onde importar a dependência? | |
| No **Maven**, a dependência vai no `pom.xml` do projeto - Já instalado na criação do arquivo spring-boot. | |
| ### Exemplo: | |
| ```xml | |
| <dependency> | |
| <groupId>com.h2database</groupId> | |
| <artifactId>h2</artifactId> | |
| <scope>runtime</scope> | |
| </dependency> | |
| ``` | |
| > 🔹 `scope=runtime` → o H2 só será carregado em tempo de execução, não no build. | |
| --- | |
| ## 4. Configurações no `application.properties` | |
| No diretório `src/main/resources/application.properties`, configuramos o H2: | |
| ```properties | |
| # Ativar console H2 | |
| spring.h2.console.enabled=true | |
| spring.h2.console.path=/h2-console | |
| # Datasource H2 | |
| spring.datasource.url=jdbc:h2:mem:deliverydb | |
| spring.datasource.driverClassName=org.h2.Driver | |
| spring.datasource.username=sa | |
| spring.datasource.password= | |
| # JPA / Hibernate | |
| spring.jpa.hibernate.ddl-auto=update | |
| spring.jpa.show-sql=true | |
| spring.jpa.properties.hibernate.format_sql=true | |
| ``` | |
| Explicação: | |
| * `jdbc:h2:mem:deliverydb` → cria um banco em memória chamado `deliverydb`. | |
| * `ddl-auto=update` → o Hibernate cria/atualiza as tabelas automaticamente. | |
| * `show-sql=true` → loga as queries no console. | |
| --- | |
| ## 5. Acesso ao console H2 | |
| Depois de rodar o projeto (`mvn spring-boot:run` ou direto pelo IDE), o console estará disponível em: | |
| 👉 [http://localhost:8080/h2-console](http://localhost:8080/h2-console) | |
| Configuração no console: | |
| * **JDBC URL**: `jdbc:h2:mem:deliverydb` | |
| * **User**: `sa` | |
| * **Password**: (vazio) | |
| --- | |
| ## 6. Integração com as entidades do projeto | |
| No seu repositório `delivery-tech`, você já tem entidades (por exemplo, `Cliente`, `Pedido`, `Produto`). | |
| Com o H2: | |
| * O **Spring Boot** vai criar as tabelas automaticamente com base nas classes anotadas com `@Entity`. | |
| * Os **repositórios Spring Data JPA** já podem ser usados normalmente (ex: `ClienteRepository extends JpaRepository`). | |
| Exemplo simples de entidade: | |
| ```java | |
| @Entity | |
| public class Cliente { | |
| @Id | |
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |
| private Long id; | |
| private String nome; | |
| private String email; | |
| } | |
| ``` | |
| --- | |
| ## 7. Onde usar o H2 neste projeto | |
| * **Ambiente de desenvolvimento** → para rodar localmente sem precisar instalar MySQL/Postgres. | |
| * **Testes unitários/integrados** → o banco em memória é destruído e recriado a cada execução dos testes. | |
| Se futuramente você quiser usar MySQL/Postgres em produção, basta trocar o `application.properties` (ou criar `application-dev.properties` para H2 e `application-prod.properties` para MySQL/Postgres). | |
| --- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment