Dica Rápida: Chamando Stored Procedure em Java Read More »
The post Dica Rápida: Chamando Stored Procedure em Java appeared first on Aprenda Java.
]]> Olá amigos hoje a dica é Stored Procedure. Muitos sistemas possuem suas regras de negócio centralizadas no banco de dados e as Stored Procedure são os objetos que realizam as operações de Inclusão, alteração, exclusão e até mesmo consulta no Banco de dados.
Por este motivo é importante sabermos trabalhar com esses objetos em Java.
Aprenda como acessar o banco de dados MySQL aqui.
Veja o script de criação da tabela.
CREATE TABLE tbaluno (
matricula INT NOT NULL ,
nome VARCHAR(45) NULL ,
telefone VARCHAR(45) NULL ,
email VARCHAR(45) NULL ,
datacadastro DATETIME NULL,
PRIMARY KEY (matricula));
Agora vejamos o script para geração de massa de dados:
insert into tbaluno (matricula, nome, telefone, email, datacadastro)
values (1, 'maria da silva','5555-9887','maria.silva@feltex.com.br', '2020-10-10');
insert into tbaluno (matricula, nome, telefone, email, datacadastro)
values (2, 'Jose da silva','2223-3222','jose.silva@feltex.com.br', '2020-10-10');
insert into tbaluno (matricula, nome, telefone, email, datacadastro)
values (3, 'Bruna silva','4412-2234','bruna.silva@feltex.com.br', '2020-10-10');
Criaremos uma procedure que nos retorna o total de alunos existentes em nossa tabela de alunos.
DELIMITER $$
CREATE PROCEDURE Total_Alunos(OUT total INT)
BEGIN
SELECT COUNT(matricula) INTO total FROM tbAluno;
END $$
Abaixo temos o código Java que executa a procedure e exibe o retorno.
package br.com.feltex.jdbc.avancado;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class ChamaProcedure {
public static Connection getConexao() {
Connection conexao = null;
String usuario = "root";
String senha = "teco01";
String nomeBancoDados = "bdacademicnet";
try {
conexao = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/" + nomeBancoDados, usuario,
senha);
} catch (Exception e) {
e.printStackTrace();
}
return conexao;
}
public static void main(String[] args) {
CallableStatement callableStatement = null;
Connection con = null;
try {
// Realiza a conexão com o banco de dados
con = getConexao();
//Prepara a chamada para a procedure. Observe que há "?"
// Que neste caso é o parâmetro de saída.
callableStatement = con.prepareCall("{CALL Total_Alunos(?)}");
//Informa o tipo de retorno
callableStatement.registerOutParameter(1, java.sql.Types.INTEGER);
// Executa a Stored procedure
callableStatement.execute();
// Faz a leitura do retorno
Integer totalAlunos = callableStatement.getInt(1);
System.out.println("Total alunos: " + totalAlunos);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Por hoje é só meus amigos e Vida que segue!
Links relacionados
Instalação e Configuração do Banco de Dados MySQL
Não se esqueça de curtir este post nas redes sociais. Dê a sua contribuição social e ajude o autor:
The post Dica Rápida: Chamando Stored Procedure em Java appeared first on Aprenda Java.
]]>
Batch update: Como fazer atualização em lote em Java: Read More »
The post Batch update: Como fazer atualização em lote em Java: appeared first on Aprenda Java.
]]> Olá Amigos, hoje iremos mostrar como podemos fazer atualização em Lote no Java o chamado batch update. Para isso precisaremos criar uma massa de teste com 10000 registros. Em seguida será feita uma inserção via JDBC utilizando Insert normalmente e outra vez utilizando a abordagem batch update. Veja a seguir os resultados que tivemos batch update X Insert simples.
CREATE TABLE tbaluno (
matricula INT NOT NULL ,
nome VARCHAR(45) NULL ,
telefone VARCHAR(45) NULL ,
email VARCHAR(45) NULL ,
datacadastro DATETIME NULL );
Atenção: não foi criada a chave primária para evitar conflito na geração das chaves pelo programa!
Inicialmente devemos criar a classe Aluno conforme código abaixo.
Ela servirá como modelo de negócio para atualizarmos a tabela no banco de dados.
package br.com.feltex.jdbc;
import java.io.Serializable;
import java.util.Date;
public class Aluno implements Serializable {
private static final long serialVersionUID = -309513637403441918L;
private Long matricula;
private String nome;
private String telefone;
private String email;
private String endereco;
private Date dataCadastro;
public Aluno() {
}
public Aluno(Long matricula) {
super();
this.matricula = matricula;
}
public Aluno(Long matricula, String nome) {
super();
this.matricula = matricula;
this.nome = nome;
}
public Date getDataCadastro() {
return dataCadastro;
}
public String getEmail() {
return email;
}
public String getEndereco() {
return endereco;
}
public Long getMatricula() {
return matricula;
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
public void setEmail(String email) {
this.email = email;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public void setMatricula(Long matricula) {
this.matricula = matricula;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
@Override
public String toString() {
return "Aluno [matricula=" + matricula + ", nome=" + nome
+ ", telefone=" + telefone + ", email=" + email
+ ", dataCadastro=" + dataCadastro + "]";
}
}
A seguir teremos a classe principal que executará as ações no banco de dados e fará a comparação entre os tempos gastos entre as operações Uma a uma e tipo de atualização via lote.
Temos o método “gerarMassa” que criará uma coleção de alunos que será inserido no Banco de dados. O método “executarBatch” faz as inserções dos dados em blocos. Temos também o “executarUnitario” que faz as inserções item por item. Há também o método “getConexao” que recupera um conexão com o banco de Dados. Por último, mas não menos importante, há o método “main” que inicia a aplicação.
package br.com.feltex.jdbc.avancado;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import br.com.feltex.jdbc.Aluno;
public class Transacao {
public static void gerarMassa(){
for (int i = 0; i < 10000; i++) {
Aluno aluno = new Aluno();
aluno.setMatricula(Long.valueOf(i));
aluno.setNome("Jose" + i);
aluno.setTelefone("22352-" + i);
aluno.setEmail("Jose" + i + "@feltex.com.br");
aluno.setEndereco("RUA a Numero: " + i);
aluno.setDataCadastro(new Date());
listaAlunos.add(aluno);
}
}
static List listaAlunos = new ArrayList<>();
public static void executarBatch() {
Long inicio = System.currentTimeMillis();
Long fim = 0L;
Connection conexao = null;
try {
conexao = getConexao();
conexao.setAutoCommit(false);
PreparedStatement pstm = conexao
.prepareStatement("Insert into tbaluno (matricula, nome," + " telefone, email, datacadastro) values (?,?,?,?,?)");
int contador = 0;
for (Aluno aluno : listaAlunos) {
contador++;
pstm.setLong(1, aluno.getMatricula());
pstm.setString(2, aluno.getNome());
pstm.setString(3, aluno.getTelefone());
pstm.setString(4, aluno.getEmail());
pstm.setDate(5, new java.sql.Date(aluno.getDataCadastro()
.getTime()));
pstm.addBatch();
}
if ((contador % 100) == 0) {
pstm.executeBatch();
}
conexao.commit();
pstm.close();
conexao.close();
fim = System.currentTimeMillis();
} catch (Exception e) {
try {
conexao.rollback();
} catch (Exception e2) {
e.printStackTrace();
}
e.printStackTrace();
}
System.out.println("executarBatch Tempo total[ms]: "
+ (fim - inicio));
}
public static void executarUnitario() {
Long inicio = System.currentTimeMillis();
Long fim = 0L;
Connection conexao = null;
try {
conexao = getConexao();
PreparedStatement pstm = conexao
.prepareStatement("Insert into tbaluno (matricula, nome,"
+ " telefone, email, datacadastro) values (?,?,?,?,?)");
for (Aluno aluno : listaAlunos) {
pstm.setLong(1, aluno.getMatricula());
pstm.setString(2, aluno.getNome());
pstm.setString(3, aluno.getTelefone());
pstm.setString(4, aluno.getEmail());
pstm.setDate(5, new java.sql.Date(aluno.getDataCadastro()
.getTime()));
pstm.execute();
}
pstm.close();
conexao.close();
fim = System.currentTimeMillis();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("executarUnitario Tempo total [ms]: "
+ (fim - inicio));
}
/**
*
* @return
*/
public static Connection getConexao() {
//TODO Remover este código desta classe
Connection conexao = null;
String usuario = "root";
String senha = "root";
String nomeBancoDados = "bdacademicnet";
try {
conexao = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/" + nomeBancoDados, usuario,
senha);
} catch (Exception e) {
e.printStackTrace();
}
return conexao;
}
public static void main(String[] args) {
gerarMassa();
for (int i = 0; i < 10; i++) {
executarUnitario();
executarBatch();
}
}
}
A saída deve ser parecida com a imagem abaixo:
A execução desde exemplo nos mostra qual a vantagem de utilizamos de utilizar a gravação em lotes quando temos grandes volumes de dados. Observe que o resultados são bem diferentes. Quando utilizamos a gravação batch update com um volume considerável de dados temos um ganho de desempenho.
Isto é apenas o início. Aproveite para ler os links relacionados abaixo e buscar mais informações sobre o assunto.
Então é isso. Por hoje é só e vida que segue.
The post Batch update: Como fazer atualização em lote em Java: appeared first on Aprenda Java.
]]>Instalação e Configuração do Banco de Dados MySQL Read More »
The post Instalação e Configuração do Banco de Dados MySQL appeared first on Aprenda Java.
]]>Hoje faremos a Instalação e Configuração do Banco de Dados MySQL. Esse é o banco de dados grátis mais utilizado no mundo. Muitas ferramentas de grande uso no mundo da internet utilizando ele como repositório padrão. Podemos listar aqui:
Vejam o vídeo abaixo:
Acesse nosso tutorial de JDBC: aqui
The post Instalação e Configuração do Banco de Dados MySQL appeared first on Aprenda Java.
]]>Criar DataSource para MySQL no NetBeans Read More »
The post Criar DataSource para MySQL no NetBeans appeared first on Aprenda Java.
]]>Olá Amigos, hoje é dia da criar um DataSource no NetBeans. Assim a configuração de acesso a Banco de Dados, MySQL no exemplo, ficará fora da nossa aplicação.
Para começar vamos criar o Data Source que é um componente de acesso a banco de dados.
1. Acesse a Aba “Serviços”, conforme imagem abaixo. (Caso a aba não esteja sendo exibida digite (Ctrl + 5))
2. Clique com o botão direito do mouse e selecione “nova conexão”. Aparecerá a seguinte tela:
3. Selecione o driver do MySQL. No campo “Driver” ele informará o caminho onde está disponível o driver.
4. Selecione próximo.
5. Nesta tela você deve preencher os dados de conexão com o banco. Lembre-se de criar o banco de dados através da interface de gerenciamento do Banco de Dados (MySQL Workbench)
6. Agora selecione Testar Conexão. O resultado deve ser “Conexão Bem-Sucedida”
7. Selecione Próximo.
8. A tela acima informa que há um esquema padrão de banco de dados selecionado. Selecione próximo.
9. Escreva o nome que será utilizado para o nosso dataSource “AcademicNetDS”
10. Então Finalize a operação.
11. Teremos o item de datasource “AcademicNetDS” conforme imagem abaixo.
12. Pronto Data Source criado.
Abraços e bons estudos.
The post Criar DataSource para MySQL no NetBeans appeared first on Aprenda Java.
]]>JDBC: Conectar com Banco de Dados PostgreSQL Read More »
The post JDBC: Conectar com Banco de Dados PostgreSQL appeared first on Aprenda Java.
]]>Olá amigos!
Hoje iremos aprender como realizar uma conexão com banco de Dados PostgreSQL.
Neste exemplo mostraremos como exibir o dicionário de dados, que é a lista de objetos de banco para o PostreSQL. Listaremos as tabelas.
package br.com.feltex.bancodados;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class ConexaoPostgreSQL {
public static void main(String[] args) {
System.out.println("Inicio PostgreSQLMySQL");
try {
Connection conexao = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/BDAcademicNet",
"postgres", "teco01");
PreparedStatement pstm = conexao
.prepareStatement("SELECT tablename FROM pg_tables order by tablename");
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
System.out.println("Nome tabela: " + rs.getString("tablename"));
}
rs.close();
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Fim PostgreSQLMySQL");
}
}
Abraços e bons estudos! E vida que segue!
Exemplo completo com JSF Primefaces + Hibernate + MySQL
JDBC: Conectar com Banco de Dados SQLServer
JDBC: Conectar com Banco de Dados via ODBC
JDBC: Conectar com Banco de Dados PostgreSQL
JDBC: Conectar com Banco de Dados Microsoft Access
JDBC: Aprenda a conectar com Banco de Dados MySQL
The post JDBC: Conectar com Banco de Dados PostgreSQL appeared first on Aprenda Java.
]]>JDBC MySQL: Aprenda a conectar com Banco de Dados mais usado na internet Read More »
The post JDBC MySQL: Aprenda a conectar com Banco de Dados mais usado na internet appeared first on Aprenda Java.
]]>Olá amigos! Hoje iremos aprender como realizar uma conexão com o Banco de Dados MySQL.
package br.com.feltex.bancodados;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class ConexaoMySQL {
//**
public static void main(String[] args) {
System.out.println("Inicio ConexaoMySQL");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conexao = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/bdacademicnet", "root",
"teco01");
PreparedStatement pstm = conexao
.prepareStatement("select * from information_schema.tables");
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
System.out.println("Nome tabela: " + rs.getString("table_name"));
}
rs.close();
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Fim ConexaoMySQL");
}
}
The post JDBC MySQL: Aprenda a conectar com Banco de Dados mais usado na internet appeared first on Aprenda Java.
]]>