0

Persistência de Objetos com Hibernate (Parte 02)

logoHibernatePersistência de Objetos com Hibernate (Parte 02)

Na postagem anterior vimos como mapear uma classe persistente e o como implementar o arquivo de configuração do Hibernate. Nesta postagem partiremos para a implementação do HibernateUtil que será a classe responsável por estabelecer uma sessão de conexão com a base de dados e criaremos a classe PesssoaDAO com as rotinas de banco referentes a classe de persistência PessoaVo.

Classe HibernateUtil

A classe HibernateUtil.java é disponibilizada com o Hibernate para ajudar o programador a criar os objetos Session responsáveis por fazer a persistência dos objetos. Segue a implementação da classe.

 Classes PessoaDAO e ContatoDAO

As classes PessoaDAO e ContatoDAO serão implementadas com as rotinas de banco. Seguem as mesma:

PessoaDAO.java

ContatoDAO.java

 Agora além das classes persistentes, do hibernate.cfg.xml, do HibernateUtil temos também definidos os DAOs do nosso projeto. Na próxima postagem colocarei um main para teste da estrutura criada.

0

Persistência de Objetos com Hibernate (Parte 01)

logoHibernatePersistência de Objetos com Hibernate (Parte 01)

Está é a primeira parte de uma série de postagens que farei sobre o Framework Hibernate, demonstrarei a facilidade de utilização deste framework para persistências de objetos em banco de dados relacionais.

Introdução ao Hibernate

O Hibernate é um framework que provê a persistências de objetos Java em um banco de dados relacional. Este framework oferece recursos que facilitam o mapeamento do modelo orientado objetos para modelo relacional fazendo uso de um processo chamado de MOR (Mapeamento Objeto Relacional). Mesmo trabalhando com a persistência de objetos estamos trabalhando um SGBD relacional.

Para iniciarmos neste framework um exemplo básico de agenda com duas Classes.

diagrama_exemplo

Configuração do Hibernate:

  • Configuração do Classpath

Utilizarei as seguintes bibliotecas:

      • antlr-2.7.7.jar
      • dom4j-1.6.1.jar
      • hibernate-commons-annotations-4.0.2.Final.jar
      • hibernate-core-4.2.7.SP1.jar
      • hibernate-jpa-2.0-api-1.0.1.Final.jar
      • javassist-3.18.1-GA.jar
      • jboss-logging-3.1.0.GA.jar
      • jboss-transaction-api_1.1_spec-1.0.1.Final.jar
      • mysql-connector-java-5.0.3-bin.jar

Caso não possua as mesmas clique aqui para baixar as dependências do Hibernate e clique aqui para baixar o drive do mysql. Não se esqueça de colocar os .jars em seu classpath.

  • Mapeamento dos Objetos

No Hiberante podemos usar duas técnicas para mapear objetos através do uso de XML ou através de Anotations que é a forma que utilizaremos. No mapeamento XML é  preciso acrescentar estes arquivos XML de mapeamento no arquivo hibernate.cfg.xml, para indicar a localização física de cada um deles.

      • Mapeando a Classe PessoaVo

      • Mapeando a Classe ContatoVo

 

Descrição das Anotations:

@Entity - Representa uma classe de persistência, toda classe que represente uma tabela no banco de dados deve ser anotada com essa anotação.

@Table - Anotação responsável por dizer qual tabela no banco de dados a classe irá representar.

@Id – Indica o atributo chave da tabela.

@GenedatedValue – Indica que o atributo chave é auto_incement no caso do mySQL e Sequence no caso do Postgres.

@OneToMany – Representa um relacionamento 1 para muitos.

Arquivo de Configuração hibernate.cfg.xml

O Arquivo de configuração hibernate.cfg.xml deverá está presente no diretório src do seu projeto, nele estão mantidas algumas configurações de conexão tais como: host, usuário, senha e até os objetos mapeados como classes persistentes.

Segue a Implementação do Arquivo:

Classes Persistentes

As classes persistentes representam os “Vo”s que serão persistidos na base de dados, no nosso caso seriam PessoaVo e ContatoVo. O Hibernate associará estas classes a uma tabela referente a mesma no banco.

Na segunda parte veremos a camada DAO e a configuração de Session do Hibernate. Até a próxima.

0

Teclas de Atalho do Eclipse

eclipse2Teclas de Atalho do Eclipse

  • CTRL+Barra de Espaço

CTRL+ESPACO

O principal atalho para qualquer programador, implementa o auto complete do código. Através dele você pode conhecer todos os métodos, classes ou comandos presentes da linguagem configurada.

  • CTRL+1 ( Quick Fix )CTRL+1

Exibe uma dica de correção para as linhas com erro, basta posicionar o cursor do mouse no início da linha com erro e pressionar CTRL+1, selecionar uma opção desejada de acordo com sua necessidade e pressionar ENTER.

  • CTRL+SHIFT+O

Organiza os imports do arquivo, incluindo imports de classes utilizadas e excluindo imports não utilizados pelo arquivo.

  • CTRL+SHIFT+F

Formata e organiza o código fonte.

  • CTRL+SHIFT+L  ( Lista de atalhos )

CTRL+ALT+L

Exibe a lista de atalhos configurados no eclipse.

  • ALT+SHIFT+Q ( Show View)

ALT+SHIFT+Q

Mostra a lista de views e os atalhos diretos para acessa-las.

  • ALT+SHIFT+R  (Rename Refactoring)

ALT+SHIFT+R

Refatorar atributos, métodos ou classes.Para realizar esse comando primeiro selecione o nome de qualquer variável, método ou classe.

  • ALT+SHIFT+S ( Source Quick Menu )

ALT+SHIFT+S

Implementar métodos de interfaces, gerar getters e setters, toString, equals e hashcode,  adicionar e organizar imports entre outras coisas. Mesmo se aplica quando se clica o botão direito no código fonte.

  • ALT+SHIFT+T (Refactoring Quick Menu)

ALT+SHIFT+T

Refatorar atributos, métodos ou classes. Este atalho muda de acordo com a posição que está o cursor na página de código fontes.

  • ALT+SHIFT+M

ALT+SHIFT+M

Extrai uma determinada porção de código selecionado para um novo método.

  • CTRL+3 (Quick Navigate)

CTRL+3

Permite navega entre todos os arquivos abertos, todas as views abertas de todas as perspectivas e todos os comandos. Basta digitar o nome do arquivo ou da view, além de permitir gerar getters e setters com o comando ggas (Generate Getters and Setters), contrutores com os comandos gcfs  (Generate Constructors from Superclass) e gcuf (Generate Constructors Using Fields) , além de gerar toString, equals e etc.

  • CTRL+E (Switch Editor)

CTRL+E

Usado para alternar entre os arquivos abertos no editor do eclipse.

  • CTRL+O  (Quick Overview)

CTRL+O

Exibe a estrutura de uma classe, exibindo seus atributos e métodos.

  • CTRL+T (Quick Type Hierarchy)

CTRL+T

Exibe a hierarquia de uma classe.

 

0

Gerando WebServices com JAX-WS

Java (2)Gerando WebServices com JAX-WS

A Java XML API for Web Services (JAX-WS) é uma biblioteca de Web Services para Java, que permite implementar serviços baseados nas normas XSD, WSDL e SOAP. A JAX-WS define o mapeamento de WSDL para Java e vice-versa. Com a JAX-WS é possível implementar Web Services partindo de um contrato WSDL ou partindo de código Java. Com a JAX-WS é também possível criar código cliente de invocação de Web Services.

Testando na Prática

Crie um projeto no eclipse com a seguinte estrutura:

prjws

Crie a classe WsServidor no pacote service e o SourceFolder wsdl.

Implementação do Serviço

Para implementação da classe de serviço utilizaremos as anotações @WebService e @WebMethod do pacote javax.

@WebService : representa uma interface ou classe de serviço.

@WebMethod: representa os métodos de uma interface de serviço.

@WebParam: representa os parâmetros de um método.

Gerando os artefatos do Serviço

Para gerar os artefatos do Serviço utilizaremos a ferramenta wsgen. Execute os comandos do wsgen apontado pro diretório raiz do projeto.

Para gerar com o WSDL, ServicePort e ServiceName use o comando a seguir, digite tudo em uma única linha:

Depois de gerados os artefatos com o wsgen o projeto deverá ficar com seguinte estrutura:

prjws2 Gerando o EndPoint do Serviço

Para publicar o Serviço, criaremos uma classe com o publicador do endpoint.

Para visualizar execute main para publicar o Serviço e digite em seu navegandor: http://localhost:8080/WsServidor/service

0

Criação de Web Service com Spring e Apache CXF

Java (2)Criação de Web Services com Spring Framework e Apache CXF

Nesta postagem implemento a criação de um web service básico utilizando o framework spring e o Apache CXF. O projeto de exemplo foi criado com a seguinte estrutura:

estrutprojBibliotecas do Projeto

Criação da Interface do Serviço

Na Interface do Serviço definiremos os métodos a serem implementados no WebService.

Criação do Serviço

Na criação do serviço deveremos implementar interface do mesmo e realizar as anotações para definição do web service e de seus métodos(@WebService, @WebMethod).

Gerando o WebService

Para a criação do web service usando o Framework Spring e o Apache CXF devemos criar um arquivo xml com a configuração do serviço, informando a classe definida com a anotação web service e o endpoint do serviço. Para isso criaremos o arquivo webservice-definition-beans.xml no diretório WEB-INF do WebContent do projeto.

Codificação:

Por fim configuramos o web.xml com a seguinte implementação:

Em um próximo post criarei o Client do Serviço para consumir o WebService.

2

Conversão de Jrprint em PDF

Java (2)

 

Conversão de Jrprint em PDF

Nesta postagem veremos como converter um arquivo com a extensão .jrprint em um arquivo pdf utilizando o framework jasperreports. Os arquivos .jrprint são gerados através de relatórios JasperReport. O sistema de declaração de imposto de renda salva seus relatórios com essa extensão, podemos usar o framework do jasper para gerar o PDF de um determinado arquivo .jrprint com poucas linhas de comandos.

Bibliotecas Utilizadas neste exemplo:

libsjasper

Segue a implementação:

  • Exemplo simples de Conversão usando o método main.

  • Exemplo de como gerar um .jar do Conversor

Para executar o jar basta executar o comando abaixo no diretório onde está salvo o .jar, e apontar qual é o diretório e nome do arquivo a ser convertido.

Exemplo:

conversorJrprint

Código simples mas funcional, caso haja necessidade de converter diversos arquivos podemos criar um formulário com AWT ou Swing para executar a conversão. Em uma próxima postagem colocarei um exemplo com um Jframe.

 

0

Conexão com o Banco de Dados com MyBatis

mybatisLogoConexão com o Banco de Dados com MyBatis

Nesta postagem realizaremos a conexão com uma base de dados postgres utilizando o framework myBatis. Primeiramente criaremos a base de dados uma tabela onde serão persistidos os dados.

Script do Banco de Dados

 

Criando o Projeto no Eclipse

Para este tutorial utilizo o Eclipse Juno e o Banco de Dados PostGres. Além das bibliotecas do MyBatis descritas abaixo:

bibliotecasMybatis

Download Libs MyBatis

No Eclipse definimos a seguinte estrutura de projeto:

estruturaProjetoMybatis

Classe PessoaVo

Primeiramente criaremos um exemplo simples com apenas os dados de contato de uma pessoa, nos próximos posts abordarei relacionamentos e consultas complexas.

O Arquivo de Configuração SQLMapConfig.xml

No arquivo SQLMapConfig.xml criado a raiz do projeto contêm as configurações  da conexão com o postgres, tais como a url e porta do banco, nome da base, o alias da classe a ser mapeada, o mapper de persitência, etc.

Codificação:

Configurações de Conexão do MyBatis:

Type Aliases – Apelidos

Um type alias é um nome menor para um tipo Java. É apenas relevante para a configuração em XML e só existe para evitar redundância de digitar o nome completo de uma classe.

Usamos PessoaVo como tipo no resultMap no arquivo PessoaSqlMap.xml  porque configuramos PessoaVo como apelido.

Environments – Ambientes

O MyBatis pode ser configurado para ser usado em vários ambientes. Isso ajuda a re-usar os mapeamentos XML e, vários bancos de dados. Você pode configurar vários ambientes, mas você pode escolher apenas UM ambiente por instância do SqlSessionFactory.

A ambiente padrão/default e o ID do ambiente acho que se auto-explica. Você pode dar o nome que você desejar, mas tenha certeza de que um deles seja o mesmo que o padrão.

Transaction Manager – Gerenciamento de Transações

Existem dois tipos de TransactionManager:

  • JDBC – esta configuração faz o uso das features de commit e rollback do JDBC diretamente. Depende da conexão do dataSource para gerenciar o escopo da transação.
  • MANAGED – esta configuração não faz nada. Nunca faz commit ou rollback. Deixa toda a responsabilidade para o container de gerenciar o ciclo de vida da transação. Alguns containers não esperam que isso seja feito, e se precisar fechar a conexão, é melhor setar a propriedade closeConnection para false.

Data Source

O element dataSource configure a fonte da conexão do JDBC usando a interface padrão do JDBC DataSource.

  • driver
  • url
  • username
  • password

Connection Factory

Toda aplicação que utiliza o MyBatis é centralizada numa instância do SqlSessionFactory. Uma instância do SqlSessionFactory pode ser adquirida usando o SqlSessionFactoryBuilder. O SqlSessionFactoryBuilder pode criar uma instância do SqlSessionFactory a partir de um XML ou a partir de uma instância customizada da classe Configuration. (Fonte: Loiane.com)

Configuração do Connection Factory

Mapeando a Classe PessoaVo

Para mapear a classe PessoaVo, criamos um xml com as configurações de persistência do objeto da classe no banco, para isso inserimos as queries de persistência no mapper abaixo:

Configuração do Mapper da classe PessoaVo

  • resultMap – descreve como carregar os objetos do banco de dados para os resultsets.
  • insert – query de insert mapeada.
  • update – query de update mapeada.
  • delete –  query de delete.
  • select – query de select mapeada.

Camada de acesso aos dados

Para que tudo funcione devidamente só resta a configuração do DAO da nossa classe PessoaVo.

Testando o projeto com MyBatis

Realizando o um teste básico do modelo de dados implementado.

 

 

0

Framework MyBatis

mybatisLogoIntrodução MyBatis Framework

O MyBatis é um framework JDBC de persistência de dados que envolve o relacionamento entre um banco de dados relacional e uma aplicação orientada a objetos. O MyBatis mapeia objetos com queries SQL fazendo o uso de XML.O MyBatis fornece gerenciamento de transações, mapeia as propriedades dos objetos, integração com o Spring framework.É um framework de simples implementação e alta qualidade. Atualmente o MySpace utiliza este framework para gerenciar sua massa de dados. Utilizo atualmente em um projeto e o framework demonstra muita qualidade, basta ter um bom conhecimento de SQL e XML que tudo flui com facilidade.

O que é iBatis?

  • Um framework JDBC;
  • Os desenvolvedores escrevem SQL, iBATIS o executa usando JDBC;
  • Não precisa mais usar try / catch / finally / try / catch;
  • Um mapeador SQL;
  • Automaticamente mapeia propriedades do objeto em parâmetros de prepared statements;
  • Resulta automaticamente mapas de objetos;
  • Suporte a consultas com relacionamento N +1;
  • Um gerenciador de transações;
  • iBATIS fornece um gerenciamento de transações para operações de banco de dados se nenhuma outra transação está disponível;
  • iBATIS usa o gerenciamento de transações externas (Spring, EJB CMT, etc), se disponível;
  • Grande integração com Spring, mas também pode ser usado sem Spring.

O que não é iBatis?

  • ORM;
  • Não gera SQL;
  • Não tem uma linguagem de consulta de propriedade;
  • Não saber sobre a identidade do objeto;
  • Não transparente persistir objetos;
  • Não construir um cache de objeto;

Fonte: www.loiane.com

0

Port Scanner com Sockets em Java

Java (2)Port Scanner com Sockets em Java

Esta postagem mostra um exemplo simples de como construir um portScanner utilizando a tecnologia de Sockets do Java. A tecnologia de Sockets assume o paradigma de cliente/servidor baseando em TCP-IP. Os sockets são compostos por um conjunto de primitivas do sistema operacional.

Como funciona?

O programa cliente envia uma requisição utilizando um Socket para o servidor. Esta requisição é enviada para a porta aonde está associado o ServerSocket. Ao aceitar a requisição, o ServerSocket cria um Socket exclusivo para se comunicar com o cliente. Isto deve ser feito dentro de uma Thread exclusiva para não “enfileirar” o atendimento às requisições.

Exemplo: portScanner

 

0

Descompactar Arquivo .zip em Java

Java (2)Descompactar Arquivo .zip em Java

Seguindo a postagem anterior de como compactar um arquivo em .zip segue a forma de extrair o mesmo.

Código Exemplo:

 

Teste de Extração do Arquivo: