Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/feed-rss2.php on line 8
PostgreSQL – Aprenda Java https://www.feltex.com.br/felix Cursos de java, SQL e Engenharia de Software Mon, 26 Jan 2015 02:03:13 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.1.6 Batch update: Como fazer atualização em lote em Java: https://www.feltex.com.br/felix/fazer-batch-update-java/ https://www.feltex.com.br/felix/fazer-batch-update-java/#respond Fri, 17 Oct 2014 11:28:44 +0000 http://www.feltex.com.br/felix/?p=1478 Como fazer atualização em lote em Java: batch update 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á …

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.

]]>

Como fazer atualização em lote em Java: batch update

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.
Batch update

1. Criando a tabela do banco de dados


Segue o script para a 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 );

Atenção: não foi criada a chave primária para evitar conflito na geração das chaves pelo programa!

2. Construção da classe de modelo

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 + "]";
	}

}

3. A classe que realiza as operações

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:


4. Conclusão

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.

Links relacionados

Não se esqueça de curtir este post nas redes sociais. Dê a sua contribuição social e ajude o autor:

The post Batch update: Como fazer atualização em lote em Java: appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/fazer-batch-update-java/feed/ 0
Instalação e Configuração do Banco de Dados PostGreSQL https://www.feltex.com.br/felix/instalacao-configuracao-banco-dados-postgresql/ https://www.feltex.com.br/felix/instalacao-configuracao-banco-dados-postgresql/#respond Tue, 03 Jun 2014 05:32:21 +0000 http://www.feltex.com.br/felix/?p=843 Instalação Configuração Banco Dados PostGreSQL Olá Amigos, Hoje faremos a Instalação Configuração Banco Dados PostGreSQL. PostgreSQL é um SGBD (Sistema gerenciador de banco de dados) open source poderoso. Tem mais de 15 anos de desenvolvimento ativo e uma arquitetura comprovadamente …

Instalação e Configuração do Banco de Dados PostGreSQL Read More »

The post Instalação e Configuração do Banco de Dados PostGreSQL appeared first on Aprenda Java.

]]>

Instalação Configuração Banco Dados PostGreSQL

Olá Amigos,

Hoje faremos a Instalação Configuração Banco Dados PostGreSQL.

Instalação e Configuração do Banco de Dados PostGreSQL

PostgreSQL é um SGBD (Sistema gerenciador de banco de dados) open source poderoso. Tem mais de 15 anos de desenvolvimento ativo e uma arquitetura comprovadamente forte e reputação de confiabilidade, integridade de dados e correção.
Sua instalação e configuração é bem simples.

Ele funciona em todos os principais sistemas operacionais, incluindo Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) e Windows. É totalmente compatível com ACID (Atomicidade, Consistência, Isolamento e Durabilidade), tem suporte completo para chaves estrangeiras, joins, views, triggers, e procedimentos armazenados (em vários idiomas). Ele inclui vários tipos de dados INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP. Além disso também suporta o armazenamento de grandes objetos (LOB ou CLOB) binários, incluindo imagens, sons ou vídeo. Possui interfaces de programação nativas para C/C ++, Java,.Net, Perl, Python, Ruby, Tcl, ODBC, entre outros.

Há uma documentação excelente que pode ser acessada no site neste link:aqui . Existem 2 versões, uma original criada pela equipe do projeto e outra com comentários incluídos pelos usuários.

Veja o vídeo abaixo:

Acesse o site do PostGreSQL

Links relacionados:


Veja a nossa seção de tutoriais.
Tutorial da Oracle Oracle Oficial

Gostou do post? Agradeça o autor compartilhando nas redes sociais. Clique nos links abaixo:

The post Instalação e Configuração do Banco de Dados PostGreSQL appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/instalacao-configuracao-banco-dados-postgresql/feed/ 0
JDBC: Conectar com Banco de Dados PostgreSQL https://www.feltex.com.br/felix/jdbc-conectar-banco-dados-postgresql/ https://www.feltex.com.br/felix/jdbc-conectar-banco-dados-postgresql/#respond Thu, 13 Mar 2014 14:56:24 +0000 http://www.feltex.com.br/felix/?p=413 JDBC: Conectar com Banco de Dados PostgreSQL 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 …

JDBC: Conectar com Banco de Dados PostgreSQL Read More »

The post JDBC: Conectar com Banco de Dados PostgreSQL appeared first on Aprenda Java.

]]>

JDBC: Conectar com Banco de Dados PostgreSQL

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!

Links relacionados

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

Driver PostgreSQL

Não se esqueça de curtir este post nas redes sociais. Dê a sua contribuição social e ajude o autor:

The post JDBC: Conectar com Banco de Dados PostgreSQL appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/jdbc-conectar-banco-dados-postgresql/feed/ 0