O Maven é uma ferramenta de gerenciamento de projetos amplamente utilizada no desenvolvimento de software em Java. Ele oferece uma abordagem padronizada para a construção, compilação, empacotamento e distribuição de projetos Java. O Maven também lida com a resolução de dependências e fornece um sistema de construção baseado em plugins.
Conceitos Básicos do Maven
Aqui estão alguns conceitos básicos do Maven que você precisa entender antes de usá-lo:
- Projeto: O Maven organiza o desenvolvimento de software em projetos. Cada projeto é identificado por um arquivo
pom.xml
(Project Object Model), que descreve as configurações e dependências do projeto. - POM: O arquivo
pom.xml
é o coração do Maven. Ele contém as informações do projeto, como nome, versão, descrição, dependências, plugins e perfis. - Dependências: O Maven facilita a resolução e gerenciamento de dependências do projeto. Você pode declarar as dependências necessárias no arquivo
pom.xml
e o Maven se encarregará de baixar as bibliotecas correspondentes automaticamente. - Repositório: O Maven utiliza repositórios para armazenar e buscar dependências. Existem dois tipos principais de repositórios: repositórios locais (armazenam as dependências no ambiente local do desenvolvedor) e repositórios remotos (como o Maven Central, onde as bibliotecas estão disponíveis para download).
- Ciclo de Vida do Build: O Maven possui um ciclo de vida de build pré-definido com uma série de fases, como
clean
,compile
,test
,package
einstall
. Cada fase executa uma série de metas (goals) associadas a plugins do Maven. - Plugins: Os plugins são componentes do Maven que executam tarefas específicas durante o ciclo de vida do build. Eles podem ser usados para compilar o código-fonte, executar testes, gerar documentação, empacotar o projeto, entre outras funcionalidades.
Configurando o Maven
Para começar a usar o Maven, você precisa ter o Maven instalado em seu ambiente de desenvolvimento. Você pode baixar a versão mais recente do Maven no site oficial e seguir as instruções de instalação específicas para o seu sistema operacional.
Após a instalação, verifique se o Maven está configurado corretamente, executando o seguinte comando no terminal ou prompt de comando:
1
2
mvn --version
Isso exibirá a versão do Maven e outras informações relevantes.
Estrutura de Diretórios do Projeto Maven
Um projeto Maven segue uma estrutura de diretórios padrão, que ajuda a organizar o código-fonte e outros recursos. A estrutura de diretórios típica de um projeto Maven é a seguinte:
1
2
3
4
5
6
7
8
9
10
11
meu-projeto/
├── src/
│ ├── main/
│ │ ├── java/ (código-fonte principal)
│ │ └── resources/ (recursos principais)
│ └── test/
│ ├── java/ (código-fonte de teste)
│ └── resources/ (recursos de teste)
└── pom.xml
O diretório src/main/java
contém o código-fonte principal do projeto, enquanto src/main/resources
é usado para armazenar recursos como arquivos de configuração. O diretório src/test/java
contém os arquivos de teste unitário, e src/test/resources
é usado para recursos de teste.
Ciclo de Vida do Build do Maven
O Maven possui um ciclo de vida de build pré-definido com três fases principais: default
, clean
e site
. Cada fase é composta por uma série de metas (goals). Aqui estão algumas das fases e metas mais comuns:
- clean: Remove os artefatos e arquivos gerados em builds anteriores.
- Meta:
clean
- Meta:
- compile: Compila o código-fonte do projeto.
- Meta:
compile
- Meta:
- test: Executa os testes unitários do projeto.
- Metas:
test
,surefire:test
(executa os testes usando o plugin Surefire)
- Metas:
- package: Empacota o código compilado em um formato específico, como JAR, WAR ou ZIP.
- Meta:
package
- Meta:
- install: Instala o pacote no repositório local para uso em outros projetos locais.
- Meta:
install
- Meta:
- deploy: Copia o pacote final para um repositório remoto para compartilhamento com outros desenvolvedores ou servidores de produção.
- Meta:
deploy
- Meta:
- site: Gera documentação do projeto, como relatórios, gráficos e páginas da web.
- Meta:
site
- Meta:
Para executar uma meta específica do Maven, você pode usar o seguinte comando:
1
2
mvn <fase>:<meta>
Por exemplo, para compilar o código-fonte, você pode executar:
1
2
mvn compile
O Maven executará a fase compile
e todas as fases anteriores necessárias.
O Maven é uma ferramenta poderosa que simplifica o gerenciamento de projetos Java. Ele oferece uma abordagem padronizada para compilação, teste, empacotamento e distribuição de projetos, além de lidar com dependências e plugins. Compreender os conceitos básicos do Maven e sua estrutura de diretórios permitirá que você configure e utilize o Maven com eficiência em seus projetos Java.
Configurando o Maven com MySql Server
Neste artigo, vamos explorar o desenvolvimento de um aplicativo CRUD (Create, Read, Update, Delete) em Java, que se conecta a um SGBD (Sistema de Gerenciamento de Banco de Dados) MySQL utilizando o conector JDBC. Além disso, vamos configurar o Maven para gerenciar as dependências do projeto.
Pré-requisitos
Antes de começarmos, certifique-se de que você tenha as seguintes ferramentas instaladas e configuradas em seu ambiente de desenvolvimento:
- JDK (Java Development Kit) - para compilar e executar o código Java.
- IDE (Integrated Development Environment) - como Eclipse, IntelliJ IDEA ou NetBeans para escrever o código Java.
- SGBD MySQL - instalado e em execução em sua máquina local ou em um servidor remoto.
- Maven - uma ferramenta de gerenciamento de dependências que ajudará a configurar e compilar o projeto.
Configurando o Projeto com Maven
- Crie um novo diretório para o projeto e abra-o em sua IDE.
- Inicie um novo projeto Maven usando um dos seguintes métodos:
- Eclipse: Vá em
File > New > Project...
, selecioneMaven > Maven Project
e siga as instruções para criar o projeto. - VsCode: instale as extenções para projetos java e Maven, acesse o painel esquerdo, o explorador em
Maven > + Create Maven Project
, selecione a opçãoCreate from archetype
. Selecionemaven-archetype-quickstart
e siga as instruções para criar o projeto. - NetBeans: Vá em
File > New Project...
, selecioneMaven
na categoria, escolhaMaven Project
e siga as instruções para criar o projeto.
- Eclipse: Vá em
- Após a criação do projeto, você verá um arquivo
pom.xml
que contém as configurações do Maven. Visite o repositório do conector e selecione a versão mais atual, copie o código, e abra o arquivopom.xml
e adicione a dependência do conector JDBC do MySQL. Por exemplo: cole o seguinte trecho dentro da tag<dependencies>
:
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
Certifique-se de substituir a versão do conector JDBC pela versão mais recente disponível.
- Salve o arquivo
pom.xml
para que as alterações entrem em vigor. O Maven agora baixará automaticamente o conector JDBC do MySQL e as dependências necessárias para o projeto.
Criando a Conexão com o Banco de Dados
- Crie uma nova classe chamada
DatabaseConnector
em seu projeto para lidar com a conexão ao banco de dados. Dentro da classe, declare os seguintes atributos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnector {
private static final String URL = "jdbc:mysql://localhost:3306/nome_do_banco_de_dados";
private static final String USER = "usuario";
private static final String PASSWORD = "senha";
private Connection connection;
// Restante do código...
}
Certifique-se de substituir nome_do_banco_de_dados
, usuario
esenha
pelas suas informações correspondentes.
- Crie um método chamado
connect()
para estabelecer a conexão com o banco de dados:
1
2
3
4
5
6
7
8
9
public void connect() {
try {
connection = DriverManager.getConnection(URL, USER, PASSWORD);
System.out.println("Conexão estabelecida com o banco de dados!");
} catch (SQLException e) {
System.out.println("Falha ao conectar ao banco de dados: " + e.getMessage());
}
}
- Crie um método chamado
disconnect()
para encerrar a conexão com o banco de dados:
1
2
3
4
5
6
7
8
9
10
11
public void disconnect() {
try {
if (connection != null && !connection.isClosed()) {
connection.close();
System.out.println("Conexão fechada com o banco de dados.");
}
} catch (SQLException e) {
System.out.println("Falha ao fechar a conexão com o banco de dados: " + e.getMessage());
}
}
A classe DatabaseConnector
agora possui os métodos connect()
e disconnect()
para estabelecer e encerrar a conexão com o banco de dados.
Operações CRUD
Agora, vamos implementar as operações CRUD (Create, Read, Update, Delete) utilizando a conexão ao banco de dados.
- Crie uma classe chamada
ProductDAO
que será responsável por manipular os dados da tabelaProduct
no banco de dados. Dentro da classe, declare os seguintes atributos:
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ProductDAO {
private Connection connection;
// Restante do código...
}
- Adicione um construtor à classe
ProductDAO
que recebe um objetoConnection
como parâmetro:
1
2
3
4
public ProductDAO(Connection connection) {
this.connection = connection;
}
- Implemente os métodos CRUD na classe
ProductDAO
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public void create(Product product) {
String query = "INSERT INTO Product (name, price) VALUES (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, product.getName());
statement.setDouble(2, product.getPrice());
statement.executeUpdate();
System.out.println("Produto criado com sucesso.");
} catch (SQLException e) {
System.out.println("Falha ao criar o produto: " + e.getMessage());
}
}
public List<Product> readAll() {
List<Product> products = new ArrayList<>();
String query = "SELECT * FROM Product";
try (PreparedStatement statement = connection.prepareStatement(query)) {
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
double price = resultSet.getDouble("price");
Product product = new Product(id, name, price);
products.add(product);
}
} catch (SQLException e) {
System.out.println("Falha ao ler os produtos: " + e.getMessage());
}
return products;
}
public void update(Product product) {
String query = "UPDATE Product SET name = ?, price = ? WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, product.getName());
statement.setDouble(2, product.getPrice());
statement.setInt(3, product.getId());
statement.executeUpdate();
System.out.println("Produto atualizado com sucesso.");
} catch (SQLException e) {
System.out.println
("Falha ao atualizar o produto: " + e.getMessage());
}
}
public void delete(int id) {
String query = "DELETE FROM Product WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, id);
statement.executeUpdate();
System.out.println("Produto excluído com sucesso.");
} catch (SQLException e) {
System.out.println("Falha ao excluir o produto: " + e.getMessage());
}
}
Os métodos create()
, readAll()
, update()
e delete()
são responsáveis por criar, ler, atualizar e excluir produtos no banco de dados, respectivamente.
Testando o Aplicativo CRUD
Agora que implementamos as classes DatabaseConnector
e ProductDAO
, podemos testar o aplicativo CRUD.
- Crie uma classe
Main
e adicione o métodomain()
para iniciar o aplicativo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Main {
public static void main(String[] args) {
// Criar uma instância do DatabaseConnector
DatabaseConnector connector = new DatabaseConnector();
// Estabelecer a conexão com o banco de dados
connector.connect();
// Criar uma instância do ProductDAO com a conexão estabelecida
ProductDAO productDAO = new ProductDAO(connector.getConnection());
// Criar um novo produto
Product product = new Product("Nome do Produto", 9.99);
productDAO.create(product);
// Ler todos os produtos do banco de dados
List<Product> products = productDAO.readAll();
for (Product p : products) {
System.out.println(p);
}
// Atualizar um produto existente
product.setPrice(19.99);
productDAO.update(product);
// Excluir um produto
productDAO.delete(product.getId());
// Encerrar a conexão com o banco de dados
connector.disconnect();
}
}
Certifique-se de substituir "Nome do Produto"
e 9.99
pelos valores correspondentes.
- Execute a classe
Main
e verifique a saída no console. Você deve ver a criação, leitura, atualização e exclusão do produto sendo exibidos.
Parabéns! Você desenvolveu um aplicativo CRUD em Java que se conecta ao SGBD MySQL usando o conector JDBC e configurou o Maven para gerenciar as dependências do projeto.
Este artigo abordou uma implementação básica de um CRUD, mas você pode expandir e aprimorar o aplicativo de acordo com suas necessidades, adicionando mais funcionalidades e validações.
Referências
Super revisão de OO e SQL com Java e JDBC - DevSuperior Nelio Alves
Conhecendo melhor o Maven - Alura