Criando aplicação Java com Hibernate e PostgreSQL – Parte 3

Ola a todos!

Para iniciar está parte, primeiro é preciso ter feitos todos os passos descritos neste post.

Está é a 3ª parte do tutorial, onde vamos criar os arquivos de configuração do Hibernate e gerar as entidades usando a engenharia reversa com as tabelas já existentes no banco, essa é uma das melhores práticas, pois suas entidades vão representar fielmente seu banco de dados, tanto em colunas como nos relacionamentos.

3 – Criando projeto

O primeiro arquivo que precisamos é o persistence.xml, esse arquivo é responsável por realizar a conexão com o banco de dados, para mais informação sobre este arquivo deixe um comentário. Abaixe segue o arquivo que será usado para se conectar com o banco de dados que criamos neste post.


<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
	version="1.0">
	<persistence-unit name="maindatabase" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
			<property name="hibernate.connection.username" value="postgres" />
			<property name="hibernate.connection.password" value="database" />
			<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/delivery" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
		</properties>
	</persistence-unit>

</persistence>

O segundo arquivo de que precisamos é o arquivo.reveng.xml, este arquivo é responsável por gerenciar as SEQUENCES geradas pelo banco de dados PostgreSQL, para mais informações sobre este arquivo deixei um comentário.  Abaixe segue o arquivo que será usado para gerenciar as SEQUENCES do banco de dados que criamos neste post.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>
  <table-filter match-schema="public" match-name=".*"/>
<table schema="public" name="buy">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_buy</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="provider">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_provider</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="delivery">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_delivery</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="client">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_client</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="product">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_product</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="stock">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_stock</param>
  		</generator>
  	</primary-key></table>
</hibernate-reverse-engineering>

Com estes dois arquivos já em mãos podemos iniciar a criação do projeto, os passos para a criação do projeto podem ser visto no vídeo abaixo.

No próximo post será disponibilizada a classe GenericDAO.java que vai ajudar você a criar seus DAO’s para consultas ao banco, como executar suas primeiras consultas e explicar como funciona a estrutura que foi gerada neste post.

Até mais…

Criando aplicação Java com Hibernate e PostgreSQL – Parte 2

Olá a todos!

Para iniciar está parte, primeiro é preciso ter feitos todos os passos descritos neste post.

Está é a 2ª parte do tutorial, onde vamos criar o banco de dados, como exemplo iremos utilizar o banco de dados utilizado para criar a aplicação Deliveries Manager que se encontra neste post.

2 – Criando banco de dados

Abaixo segue uma imagem do banco de dados que foi retirada do framework PowerArchitect que é uma excelente opção para visualizar seus banco de dados de modo gráfico e realizar a geração de script, seu maior diferencial é o suporte a vários bancos de dados inclusive o PostgreSQL que é abordado neste tutorial, mais informações sobre este framework serão divulgadas em breve em outro post.

database

database

Abaixo segue o script do banco de dados que foi gerado pelo framework descrito acima.


CREATE SEQUENCE public.seq_provider;

CREATE TABLE public.provider (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_provider'),
                name VARCHAR(30),
                celluar VARCHAR(30) NOT NULL,
                phone VARCHAR(30) NOT NULL,
                cnpj VARCHAR(30) NOT NULL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_provider PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_provider OWNED BY public.provider.id;

CREATE SEQUENCE public.seq_product;

CREATE TABLE public.product (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_product'),
                name VARCHAR(30),
                value REAL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_product PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_product OWNED BY public.product.id;

CREATE UNIQUE INDEX uk_product_name
 ON public.product
 ( name );

CREATE SEQUENCE public.seq_stock;

CREATE TABLE public.stock (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_stock'),
                date TIMESTAMP,
                product_id BIGINT,
                quantity INTEGER,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_stock PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_stock OWNED BY public.stock.id;

CREATE SEQUENCE public.seq_client;

CREATE TABLE public.client (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_client'),
                name VARCHAR(30) NOT NULL,
                celluar VARCHAR(30) NOT NULL,
                phone VARCHAR(30) NOT NULL,
                city VARCHAR(30) NOT NULL,
                district VARCHAR(30) NOT NULL,
                street VARCHAR(30) NOT NULL,
                house_number INTEGER NOT NULL,
                distance REAL NOT NULL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_client PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_client OWNED BY public.client.id;

CREATE SEQUENCE public.seq_delivery;

CREATE TABLE public.delivery (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_delivery'),
                product_id BIGINT,
                client_id BIGINT,
                date TIMESTAMP,
                quantity INTEGER,
                value REAL,
                status VARCHAR(30) NOT NULL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_delivery PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_delivery OWNED BY public.delivery.id;

CREATE SEQUENCE public.seq_buy;

CREATE TABLE public.buy (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_buy'),
                date TIMESTAMP,
                provider_id BIGINT,
                product_id BIGINT,
                quantity INTEGER,
                value REAL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_buy PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_buy OWNED BY public.buy.id;

ALTER TABLE public.buy ADD CONSTRAINT fk_buy_provider_id
FOREIGN KEY (provider_id)
REFERENCES public.provider (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.buy ADD CONSTRAINT fk_buy_product_id
FOREIGN KEY (product_id)
REFERENCES public.product (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.delivery ADD CONSTRAINT fk_delivery_product_id
FOREIGN KEY (product_id)
REFERENCES public.product (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.stock ADD CONSTRAINT fk_stock_product_id
FOREIGN KEY (product_id)
REFERENCES public.product (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.delivery ADD CONSTRAINT fk_delivery_client_id
FOREIGN KEY (client_id)
REFERENCES public.client (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

Abaixo um vídeo de como executar este script no banco de dados.

Pronto já temos a ambiente configurado e o banco de dados da aplicação, no próximo post será explicado como criar o projeto e configurar o Hibernate.

Até mais.

Download e Configuração do Eclipse Juno com JBoss AS 7

Olá a todos!

Para quem está querendo se atualizar utilizando a versão mais atual das ferramentas free utilizadas para o desenvolvimento Java web, abaixo segue a configuração do Eclipse Juno com JBoss 7.

Clique neste link para realizar o download do Eclipse Juno, versão mais atual e voltada para o desenvolvimento web.

Clique neste link para realizar o download do JBoss AS 7, versão mais atual.

Após realizar o download da IDE de desenvolvimento Eclipse, descompacte o arquivo em um diretório de sua preferência, com o Eclipse Juno já inicializado como na imagem abaixo, vamos instalar o JBoss Tools, que são um conjunto de ferramentas que auxiliam no desenvolvimento web.

Eclipse Juno

Eclipse Juno

Para instalar o JBoss Tools, acesse, Menu >> Help >> Install New Software e adicione a seguinte URL http://download.jboss.org/jbosstools/updates/stable/juno/

Para entender melhor siga os passos descritos nas imagens abaixo:

Inserindo URL

Inserindo URL

Selecionando versão

Selecionando versão

Aceitando termos da licença

Aceitando termos da licença

Instalando software

Instalando software

Após estes passos aguarde até o término da instalação.

O próximo passo é instalar o Servidor de aplicação JBoss AS 7 no Eclipse Juno, para isso descompacte o arquivo em um diretório de sua preferencia.

No Eclipse Juno encontre a aba servidores, caso não encontre acesse Menu >> Window >> Show View e pesquise por server, após isso clique em new server wizard, e siga os passos das imagens abaixo.

Instalar JBoss AS 7

Instalar JBoss AS 7

Selecionando versão do servidor

Selecionando versão do servidor

Inserindo caminho do servidor

Inserindo caminho do servidor

Realizando start do servidor

Realizando start do servidor

Após realizar o start do servidor, acesse a seguinte URL no browser http://localhost:8080/ e veja o resultado com a imagem abaixo.

Servidor JBoss AS 7

Servidor JBoss AS 7

Até mais…

Criando aplicação Java com Hibernate e PostgreSQL – Parte 1

Olá a todos!

Será iniciado um tutorial de como criar sua aplicação Java desktop utilizando Hibernate com banco de dados PostgresSQL.

Parte 1 – Configurando ambiente de trabalho.

Requisitos para iniciar:

  • Java jdk, jre ou open-jdk
  • Eclipse
  • PostgresSQL
  • antlr-2.7.6.jar
  • commons-collections-3.1.jar
  • dom4j-1.6.1.jar
  • hibernate3.jar
  • javassist-3.12.0.GA.jar
  • jta-1.1.jar
  • slf4j-api-1.6.1.jar
  • hibernate-jpa-2.0-api-1.0.0.Final.jar
  • postgresql-8.4-701.jdbc4.jar

Primeiro vamos configurar o ambiente de trabalho que consiste em instalar a plataforma Java, a IDE de desenvolvimento Eclipse e instalar o banco de dados PostgresSQL.

1- Java

Para conferir se você possui alguma versão do Java instalado na sua máquina digite o seguinte comando.

                # java -version

Se existir alguma versão instalada a mesma será exibida, caso não tenha nenhuma versão instalada execute o seguinte comando:

                # sudo apt-get install openjdk-6-jdk

Aguarde até o fim da instalação e pronto, você já possui a versão 6 do Java instalada na sua máquina.

2 – Eclipse

Para instalar a IDE de desenvolvimento Eclipse em sua máquina basta realizar o download clicando neste link e descompactar o arquivo em um diretório de sua preferencia.

3 – PostgreSQL

A instalação do banco de dados PostgreSQL já foi abordada neste blog, basta seguir os passos deste post e você terá o banco de dados instalado em sua máquina.

Com estes 3 passos você terá o ambiente pronto para iniciar, os próximos passos são realizar o download dos arquivos.jar básicos que compõe o framework Hibernate.

4 – Download dos arquivos.jar

Para finalizar é preciso realizar o download dos seguintes arquivos:

antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.1.jar
postgresql-8.4-701.jdbc4.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar.

Depois disso você já terá tudo que é preciso para iniciar a construção de sua aplicação Java utilizando Hibernate com banco de dados PostgreSQL.

Nó próximo post será disponibilizada a criação do banco de dados que será utilizado como exemplo.

Até mais…

Convertendo objetos em array de bytes

Olá a todos!

Se você precisa converter seu objeto Java em array de bytes ou vice versa, abaixo segue uma classe que vai ajudar.


package com.danilo.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ConvertObjectToByteArray {
	
	/**
	 * Converte um Objeto para um array de bytes
	 * @param object
	 * @return byte[]
	 */
	public static byte[] convertObjectToByteArray(Object object) {
		byte[] bytes = null;
		try {
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
			ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
			objectOutputStream.writeObject(object);
			objectOutputStream.flush();
			objectOutputStream.close();
			byteArrayOutputStream.close();
			bytes = byteArrayOutputStream.toByteArray();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return bytes;
	}

	/**
	 * Converte um array de bytes para um objeto
	 * @param bytes
	 * @return object
	 */
	public static Object convertByteArrayToObject(byte[] bytes) {
		Object object = null;

		try {
			ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
			ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
			object = objectInputStream.readObject();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		return object;
	}
	
}


Até mais…

Exportando dados para Excel com JBoss Seam e Richfaces

Olá a todos!

Se você esta em um projeto web utilizando JBoss Seam e Richfaces, e quer exportar os dados de sua tabela para Excel sem ter que criar outra página, e construir novamente toda a tabela, segue uma dica.

Utilize o recurso do JBoss Seam, org.jboss.seam.excel.exporter.excelExporter.export(‘tableId’), para facilitar ainda mais, este comando pode ser inserido direto no seu código xhtml, é preciso apenas passar o id da sua tabela.

Abaixo segue um exemplo.


<h:form>

    <h:commandLink id="exportLink" immediate="true" action="#{org.jboss.seam.excel.exporter.excelExporter.export('table')}" value="#{messages['exportLink']}"/>

    <rich:dataTable value="#{bean.values()}"
        var="_value"
        id="table"
        sortMode="multi">

       <rich:column sortBy="#{_value.name}">
           <f:facet name="header">
               <h:outputText value="#{messages['Name']}"/>
           </f:facet>
          <h:outputText value="#{_value.name}"/>
       </rich:column>

</h:form>

Até mais…

Projeto para gerenciar entregas “Manager Deliveries”

Olá a todos!

Abaixo segue o projeto Manager Deliveries que se trata de um gerenciador de entregas, interessados em adquirir o sistema entrar em contato.

Tecnologias usadas:

  1. JavaSE
  2. PostgreSQL
  3. Hiberante
  4. Ireport
  5. Power Architect
  6. JFreeChart
  7. Eclipse
  8. JBoss Tools
  9. SwingX

O sistema gerencia toda parte de clientes, fornecedor, compras, estoque e mostra o status de cada entrega, pondendo ser realizado filtro por qualquer tipo de status seja em débito, paga, por data. O sistema realiza o cálculo de acordo com a distancia da casa do cliente para saber o total de kilometros percorridos.

Com este sistema você pode manter o controle dos seus clientes, fornecedores, estoque, compras e vendas de uma forma super rápida e eficaz.

Clique neste link para assistir o vídeo de demonstração do sistema.

Abaixo segue algumas imagens do sistema.

Tela principal  Tela de entrega realizando filtro Tela de compra Verificando estoque