AngularJS - Introdução

Nesse artigo você irá aprender:
·         Como fazer o download do AngularJS e configurar uma estrutura simples de projeto;
·         Como importar e inicializar o AngularJS em uma página HTML;
·         O que são e para que servem as diretivas ng-app, ng-model, ng-controller, ng-repeat, ng-submit e ng-click;
·         Como criar um controller com o AngularJS;
·         Como criar um carrinho de compras simples com o AngularJS.

1 – Efetuando o dowload do AngularJS e criando uma estrutura simples de projeto
Antes de mais nada precisaremos escolher um diretório onde nosso projeto será criado, no meu caso criei uma pasta chamada app no meu desktop.
Dentro do diretório app criaremos um arquivo chamado index.html ( utilize seu editor de texto favorito para isso ), e uma pasta chama lib, onde colocaremos os arquivos do AngularJS.
Uma vez criada a estrutura acima, acesse http://angularjs.org e clique no botão de Download. Na modal que será exibida clique emDownload para baixar o arquivo angular.min.js.
Copie o arquivo angular.min.js para o diretório app/lib do seu projeto.
A estrutura final do projeto deverá estar assim:
app
—- index.html
—- lib
——– angular.min.js

2 – Como importar e inicializar o AngularJS
Chegou a hora de começarmos a codificar e criarmos nosso primeiro código com o AngularJS, para isso abra o arquivo index.html no seu editor de texto favorito e insira o seguinte código HTML.

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>AngularJS - Olá Mundo!</title>
  <script src="lib/angular.min.js"></script>
 </head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>

<div ng-app="">

<p>Insira algo na caixa de entrada:</p>
<p>Name: <input type="text" ng-model="name"></p>
<p>Olá {{name}}!</p>

</div>

</body>
</html>


Executando o código a seguir no navegador de sua preferência você visualizará uma tela conforme a seguir:

Como você pode perceber a maioria do código acima deve ser familiar e consiste basicamente de HTML, exceto o uso de três recursos do AngularJS, que são as diretivas ng-app, ng-model e {{ … }}, que serão explicadas a seguir.
Antes de explicar o que são as diretivas citadas acima, vale salientar que a única configuração necessária para utilizar o AngularJS em nossa aplicação é a importação do arquivo angular.min.js na página, código encontrado na linha 6.
Bom, vamos então explicar o que significam as diretivas ng-app, ng-model e o operador {{ … }}.
A diretiva ng-app é responsável por inicializar uma aplicação AngularJS. Geralmente ela é colocada na tag HTML ou BODY, e ela será responsável por criar o escopo da aplicação, dai a necessidade dela ser adicionada em um elemento de maior escopo do que o restante do código adicionado.
A diretiva ng-model é responsável por fazer o bind de um elemento da view em um model, tornando o elemento disponível no escopo da aplicação, permitindo manipularmos o seu valor diretamente pelo AngularJS.
O operador {{ … }} é equivalente a diretiva ng-bind, e serve para exibir o conteúdo de algum item contido no escopo da aplicação, como por exemplo o valor atribuído a um item ng-model.

3 – Criando um carrinho de compras simples

Aproveitando os conceitos aprendidos anteriormente, vamos além do simples ‘Olá Mundo!’ e vamos aproveitar para aprender sobre mais alguns recursos interessantes do AngularJS.
Para isso iremos construir um carrinho de compras simples, que permitirá listar os itens do carrinho na tela, assim como adicionar e remover um produto do carrinho. Os dados serão armazenados um uma array de objetos JSON, que é um padrão excelente para trabalhar com dados no AngularJS.

Segue o código do carrinho de compras:
<!doctype html>
<html ng-app="todoApp">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    <script src="todo.js"></script>
    <link rel="stylesheet" href="todo.css">
  </head>
  <body>
    <h2>Carrinho de Compras</h2>
    <div ng-controller="TodoListController as todoList">
      <span>{{todoList.remaining()}} of {{todoList.todos.length}} Produtos</span>
      [ <a href="" ng-click="todoList.archive()">remover item</a> ]
      <ul class="unstyled">
        <li ng-repeat="todo in todoList.todos">
          <label class="checkbox">
            <input type="checkbox" ng-model="todo.done">
            <span class="done-{{todo.done}}">{{todo.text}}</span>
          </label>
        </li>
      </ul>
      <form ng-submit="todoList.addTodo()">
        <input type="text" ng-model="todoList.todoText"  size="30"
               placeholder="add new todo here">
        <input class="btn-primary" type="submit" value="Adicionar no Carrinho">
      </form>
    </div>
  </body>
  <script>
  angular.module('todoApp', [])
  .controller('TodoListController', function() {
    var todoList = this;
    todoList.todos = [
      {text:'learn AngularJS', done:true},
      {text:'build an AngularJS app', done:false}];

    todoList.addTodo = function() {
      todoList.todos.push({text:todoList.todoText, done:false});
      todoList.todoText = '';
    };

    todoList.remaining = function() {
      var count = 0;
      angular.forEach(todoList.todos, function(todo) {
        count += todo.done ? 0 : 1;
      });
      return count;
    };

    todoList.archive = function() {
      var oldTodos = todoList.todos;
      todoList.todos = [];
      angular.forEach(oldTodos, function(todo) {
        if (!todo.done) todoList.todos.push(todo);
      });
    };
  });
  </script>
  
  <style>
  
  .done-true {
  text-decoration: line-through;
  color: grey;
}
</style>
  
</html>



No código acima podemos destacar alguns recursos novos, como ong-controllerng-repeatng-clickng-submit, assim como a criação de uma function será utilizada como o nosso controller.

Vamos explicar as novas diretivas apresentadas:
A diretiva ng-controller é responsável por associar um controller na view da aplicação, o que significa que o código do controller estará disponível no escopo abaixo onde a diretiva ng-controller foi definida.
A diretiva ng-repeat permite iterar e exibir os dados de uma array na nossa view, ela funciona como um foreach existente nas linguagens de programação. Para todo item iterado é disponibilizada a variável$index, que contém o índice do item na array.

A diretiva ng-click representa uma ação de clique utilizada em um objeto de ação, como um link ou um botão. Para que ele funcione é necessário passar uma função contida no escopo de um controller, como veremos mais abaixo.

A diretiva ng-submit é igual ao ng-click, porém é utilizada para o envio e processamento de formulários. Ele também evita que o formulário seja efetivamente enviado ao clicar no botão submit, o que faria a página ser recarregada.

Por fim, temos a função HelloController, que representa nossa classe controller e foi associada a diretiva ng-controller.

Repare que nossa função HelloController recebe um parâmetro, o$scope, que é o escopo do nosso controller, ou seja, tudo que está na hierarquia de onde definimos nossa diretiva ng-controller. Essa variável $scope é passada por injeção de dependência pelo próprio AngularJS.

Injeção de dependência é um design pattern utilizado para prover recursos de forma simples e intuitiva entre recursos, assim o AngularJS criar o escopo do controller e nos fornece através da variável $scope pronta para utilização.
Perceba que todos os atributos e funções estão associados com a variável $scope no controller, o que significa que elas podem ser acessadas na view, assim quando declaramos a diretiva ng-repeatcom a variável carrinho, o AngularJS saberá onde encontrar os valores a serem exibidos. O mesmo vale para as funções utilizadas em ng-click e ng-submit, responsáveis por processarem as ações da página.

Hibernate com Hibernate Tools

O artigo que veremos fala sobre a utilização do Hibernate Tools, um excelente plugin para o Eclipse IDE, oficial da Red Hat, feito para trabalhar com o Hibernate.
Dúvidas e críticas são sempre bem vindas.

Obtendo e instalando o Eclipse IDE

Para desenvolver este exemplo, utilizei a versão do Eclipse IDE 3.6, em um ambiente voltado para o trabalho com Java EE. Para obter o Eclipse IDE, já configurado com o ambiente Web, vá ao endereço http://www.eclipse.org/downloads/ e clique em Eclipse IDE for Java EE Developers. Lembre-se de selecionar o seu sistema operacional.
Ao baixar, descompacte em um local desejado de sua máquina.

O plugin JBoss Tools

Para a versão do Eclipse 3.6, o atual enquanto escrevo este artigo, temos uma versão em desenvolvimento compatível do plugin JBoss Tools. Para obtê-lo, basta baixar a versão de desenvolvimento atual, encontrada em um dos diretórios existentes dentro deste endereço:
Podemos baixar o Hibernate Tools separadamente ou, como fiz, baixando o JBoss Tools completo. O arquivo que obtive, no momento em que escrevo é o JBossTools-Update-3.2.0.v201006240331N-H369-M1.zip. Com o Eclipse IDE fechado, ao baixar o plugin, descompacte e mova seu conteúdo  sobre o diretório eclipse. Isto fará a instalação do  plugin JBoss Tools. Depois de adicionarmos o plugin, inicie o Eclipse.
Atenção: Por se tratar de uma versão em desenvolvimento, o endereço passado neste artigo poderá sofrer alterações. Portanto, sempre verifique a última versão no endereço http://download.jboss.org/jbosstools/builds/. As versões de desenvolvimento costumam causar instabilidade no Eclipse, portanto, façam seu uso em um ambiente de testes.

O banco de dados

Utilizaremos o banco de dados MySQL, que pode ser adquirido clicando aqui. O banco de dados que utilizaremos para executar o exemplo se chamará hibernatenapratica.

Criando o projeto

Iniciem alterando a perspectiva. No ícone Open Perspective,  cliquem em Other.
Figure 1 – Alterando a Perspectiva
Figura 1 – Alterando a Perspectiva
Selecionem em seguida a Perspectiva Hibernate.
Figure 2 – Seleção da perspectiva Hibernate
Figura 2 – Seleção da perspectiva Hibernate
Na view Package Explorer, cliquem com o direito do mouse e selecionem, no menu de contexto, o item Project.
Figure 3 – Criando um novo projeto pela view Package Explorer através do menu de contexto
Figura 3 – Criando um novo projeto pela view Package Explorer através do menu de contexto
Na caixa de dialogo New Project, selecionem Java>Java Project e cliquem no botão Next.
Figure 4 – Seleção da opção Java Project
Figura 4 – Seleção da opção Java Project
Em New Java Project, digitem o nome do seu projeto. Irei utilizar o nome ProjUtilizandoHibernateTools. Em seguida, cliquem no botão Finish.
Figure 5 – Criação de um projeto Java
Figura 5 – Criação de um projeto Java
Ao surgir a caixa de dialogo Open Associated Perspective, cliquem no botão No. Nós não precisaremos da perspectiva Java apenas para editar o projeto, uma vez que nossa intenção é trabalhar única e exclusivamente com o Hibernate.
Figure 6 – Pergunta automática de alteração de perspectiva feita dependendo do tipo de projeto criado
Figura 6 – Pergunta automática de alteração de perspectiva feita dependendo do tipo de projeto criado

As bibliotecas

Para trabalhar com o Hibernate 3.5, primeiramente será preciso configurar os arquivos no projeto. Para adicionar as bibliotecas que necessitamos ao projeto, cliquem com o direito do mouse sobre o mesmo, na view Package Explorer e, no menu de contexto, selecionem Properties.
Figure 7 – Bibliotecas do projeto
Figura 7 – Bibliotecas do projeto
Vocês podem baixar as bibliotecas do Hibernate clicando aqui. No site, em Download, no menu lateral esquerdo, encontramos as bibliotecas para serem baixadas. A versão, no momento em que escrevo, é a 3.5.1.
Os arquivos que utilizaremos no projeto serão os encontrados em:
  • Hibernate Core
Ao baixar os arquivos, descompacte-os.  Vocês precisarão das seguintes bibliotecas:
  • hibernate3.jar
  • antlr-2.7.6.jar
  • commons-collections-3.1.jar
  • dom4j-1.6.1.jar
  • javassist-3.9.0.GA.jar
  • jta-1.1.jar
  • slf4j-api-1.5.8.jar
  • hibernate-jpa-2.0-api-1.0.0-CR-1.jar
Além destes arquivos, será necessário utilizar as bibliotecas da Simple Logging Facade for Java, SLF4J. Baixem os arquivos com todas as bibliotecas da SLF4J aqui.
Ao descompactar o arquivo, vocês encontrarão a seguinte biblioteca:
  • slf4j-jdk14-1.5.11.jar
Por fim, também necessitaremos da biblioteca JDBC do MySQL, que pode ser obtida clicando aqui. A versão 5.1.10 era, no momento em que este artigo começa a ser escrito, a versão mais atual. Entretanto, é possível que, com o tempo, isto esteja alterado.
Para o projeto, precisaremos do seguinte JAR:
  • mysql-connector-java-5.1.10-bin.jar

Criando o JavaBean Categoria

Com o direito do mouse em seu projeto, vamos até o item New>Other. Na caixa de diálogo New, selecionem Java>Class. Na caixa de diálogo New Java Class, preencham o pacote (br.com.integrator) e o nome da classe, no caso Categoria, em Name. Confirmem a criação no botão Finish.
Figure 8 – Criando a classe Categoria
Figura 8 – Criando a classe Categoria
Alterem a classe Categoria conforme mostrado na Listagem 1.
Listagem 1 – O JavaBean Categoria

Mapeando a tabela no Hibernate utilizando a forma tradicional

Para mapear a tabela correspondente no banco de dados a classe Categoria, através do Hibernate, temos que criar um XML como forma tradicional de utilização do framework.
Selecionem o pacote e a classe na view Package Explorer e, com o direito do mouse, selecionem o item New>Hibernate XML Mapping file (hbm.xml).
Figure 9 – Seleção do item Hibernate XML Mapping file (hbm.xml) no menu de contexto
Figura 9 – Seleção do item Hibernate XML Mapping file (hbm.xml) no menu de contexto
Na caixa de diálogo New Hibernate XML Mapping Files (hbm.xml), teremos os dois itens selecionados: o pacote e a classe. Caso tenhamos esquecido de selecionar um ou ambos, podemos clicar nos botões que estão na lateral direita (Add Class e Add Package). Continuem no botão Next.
Figure 10 – Criação do arquivo XML de mapeamento do Hibernate
Figura 10 – Criação do arquivo XML de mapeamento do Hibernate
Na etapa seguinte o assistente exibirá o arquivo Categoria.hbm.xml que será criado.  Continuem no botão Next.
Figure 11 – Apresentação do arquivo XML de mapeamento do Hibernate que será criado
Figura 11 – Apresentação do arquivo XML de mapeamento do Hibernate que será criado
A última etapa apresentará o XML do mapeamento criado para o Hibernate, onde a base foi a classe Categoria. Confirmem a criação no botão Finish.
Figure 12 – Arquivo XML do mapeamento que será criado
Figura 12 – Arquivo XML do mapeamento que será criado
Com a finalização do assistente, temos o XML gerado aberto pelo editor do Hibernate Tools. Neste editor podemos mudar as características que desejamos no XML gerado, colocando mais informações em cada propriedade.
Figure 13 – Editor do XML gerado para Hibernate
Figura 13 – Editor do XML gerado para Hibernate
O resultado final será como o mostrado na Listagem 2 a seguir:
Listagem 2 – O arquivo Categoria.hbm.xml
O resultado final será como o mostrado na Listagem 2 a seguir:
Listagem 2 – O arquivo Categoria.hbm.xml

Configurando o Hibernate

Com o direito do mouse sobre src, na view Package Explorer, selecionem Hibernate Configuration File (cfg.xml).
Figure 14 – Criação do arquivo hibernate.cfg.xml
Figura 14 – Criação do arquivo hibernate.cfg.xml
Ao surgir o assistente, deixem o nome do arquivo como hibernate.cfg.xml e prossigam no botão Next.
Figure 15 – Assistente de criação do arquivo de configuração do Hibernate
Figura 15 – Assistente de criação do arquivo de configuração do Hibernate
Como vamos utilizar o banco de dados MySQL, preencham os campos como mostrado na Figura 16, alterando de acordo com as configurações que possuem em seu banco de dados.
Por fim, marquem a opção Create a console configuration.  Cliquem no botão Next.
Figure 16 – Configuração do banco de dados no hibernate.cfg.xml
Figura 16 – Configuração do banco de dados no hibernate.cfg.xml
Na última etapa, temos as configurações do console do Hibernate. Este console, quando configurado e funcional, nos permite  executar queries HQL ou trabalhar com Criteria.
Figure 17 – Configuração do console Hibernate
Figura 17 – Configuração do console Hibernate
Cliquem na aba Mappings e removam o caminho configurado automaticamente para o arquivo Categoria.hbm.xml. Este caminho não será preciso porque iremos configurá-lo diretamente no arquivo hibernate.cfg.xml, ao qual o console fará uso também. Confirmem o assistente clicando no botão Finish.
Figure 18 – A abra Mappings da configuração do console
Figura 18 – A abra Mappings da configuração do console
Na finalização do assistente, abrirá o editor do arquivo de configuração do Hibernate.
Figure 19 – O editor do arquivo de configuração do Hibernate
Figura 19 – O editor do arquivo de configuração do Hibernate
Como muitas das informações que desejávamos, foram colocadas no assistente, resta apenas adicionar o caminho para Categoria.hbm.xml. Para fazermos isso, basta ir no botão Add e digitar o caminho em Resource.
Figura 20 – Detalhe de Mappings com o arquivo Categoria.hbm.xml adicionado
Figura 20 – Detalhe de Mappings com o arquivo Categoria.hbm.xml adicionado
Para executarmos o exemplo, tornando possível a criação da tabela no banco de dados pelo Hibernate, assim como sua recriação a cada nova execução, expandindo Session Factory>Properties>Hibernate, em Hibernate Configuration 3.0 XML Editor, alterem Hbm2ddl Auto para create-drop.
Neste mesmo local, onde temos as propriedades, podemos alterar para true em Show SQLUse SQL Comments e Format SQL.
Figura 21 – Adicionando novas propriedades ao arquivo hibernate.cfg.xml
Figura 21 – Adicionando novas propriedades ao arquivo hibernate.cfg.xml
O resultado final das configurações, no arquivo hibernate.cfg.xml, são mostrados na Listagem 3 a seguir:
Listagem 3 – O arquivo hibernate.cfg.xml

Algumas características do Hibernate Tools

Como Hibernate está devidamente configurado, podemos já utilizar algumas de suas características.
Figura 22 – A view Hibernate Configurations após as configurações do arquivo hibernate.cfg.xml
Figura 22 – A view Hibernate Configurations após as configurações do arquivo hibernate.cfg.xml
Na view Hibernate Configurations, cliquem com o direito do mouse e selecionem Mapping Diagram.
Figura 23 – Acessando Mapping Diagram no menu de contexto
Figura 23 – Acessando Mapping Diagram no menu de contexto
O Hibernate Tools possui uma ferramenta visual que nos permite visualizar as classes mapeadas em suas tabelas correspondentes encontradas no banco de dados.  Isto não significa que a tabela já exista no banco de dados. Trata-se da forma como a configuração “enxerga” a tabela em que irá trabalhar no banco de dados.
Figura 24 – Visualizando a classe Categoria mapeada para a tabela correspondente no banco de dados
Figura 24 – Visualizando a classe Categoria mapeada para a tabela correspondente no banco de dados

Colocando o Hibernate para trabalhar

Iremos criar duas pequenas classes que juntas irão gerar a tabela e seus  dados dela no banco de dados.
Com o direito do mouse sobre src, na view Package Explorer, selecionem o item New>Other.  Na caixa de dialogo New, selecionem Java>Class.
Coloquem o pacote br.com.integrator.util e deem o nome da classe de HIbernateUtil, confirmando o assistente, em seguida, no botão Finish.
Figura 25 – Criação da classe HibernateUtil
Figura 25 – Criação da classe HibernateUtil
O conteúdo da classe HibernateUtil será similar ao mostrado na Listagem 4 a seguir:
Listagem 4 – A classe HibernateUtil
A segunda classe que criaremos irá se chamar Main e será colocada no pacote br.com.integrator.
Figura 26 – Criação da classe Main
Figura 26 – Criação da classe Main
O conteúdo da classe Main é mostrado na Listagem 5 a seguir:
Listagem 5 – A classe Main
Executem a classe Main para que o Hibernate crie a tabela categoria e adicionem o conteúdo. Graças as configurações criadas no arquivo hibernate.cfg.xml, temos a saída na view Console como mostra a Figura 27.
Figura 27 – A saída no console criada na execução do exemplo
Figura 27 – A saída no console criada na execução do exemplo

O Editor HQL e Criteria

Para acessar o editor HQL do Hibernate Tools, cliquem com o direito do mouse em qualquer parte da view Hibernate Configurations e selecionem, no menu de contexto, o item HQL Editor.
Figura 28 – Chamando o editor HQL pelo menu de contexto na view Hibernate Configurations
Figura 28 – Chamando o editor HQL pelo menu de contexto na view Hibernate Configurations
No editor HQL, se digitarmos uma query HQL, veremos também na view Hibernate Dynamic SQL Preview a instrução SQL gerada automaticamente pelo Hibernate.
Figura 29 – Editor HQL em ação e a view Hibernate Dynamic SQL Preview exibindo a SQL gerada
Figura 29 – Editor HQL em ação e a view Hibernate Dynamic SQL Preview exibindo a SQL gerada
Ao mandarmos executar a query HQL, em Run HQL, vemos o resultado surgir na view Hibernate Query Result. Quando selecionamos este resultado, vemos os dados na view  Properties.
Figura 30 – Resultados encontrados na query HQL executada nas views Hibernate Query Result e Properties
Figura 30 – Resultados encontrados na query HQL executada nas views Hibernate Query Result e Properties
A parte de Criteria também é bem fácil de se criar. Cliquem com o direito do mouse sobre Session Factory>br.com.integrator.Categoria e selecionem, no menu de contexto, o item Hibernate Criteria Editor.
Figura 31 – Abrindo o editor de criteria
Figura 31 – Abrindo o editor de criteria
Ao surgir o editor de Criteria, basta completarmos a instrução que desejamos executar. Em seguida,  clicamos no botão Run criteria (o mesmo botão que no editor HQL se chama Run HQL).
Figura 32 – Criação do Hibernate Criteria no editor e seu resultado apos clicar em Run criteria
Figura 32 – Criação do Hibernate Criteria no editor e seu resultado apos clicar em Run criteria

Engenharia Reversa

A engenharia reversa no Hibernate Tools também é de fácil utilização.
Para trabalhar com a engenharia reversa, é necessário termos o arquivo de configuração do Hibernate, configurado para conectar-se ao banco de dados pré-existente.
A engenharia reversa está preparada para gerar as classes, os arquivos .hbm.xml ou então anotações. Também é possível termos anotações JPA, relacionamentos e outros.
Para criar a engenharia reversa em nosso exemplo, cliquem com o direito do mouse na view Package Explorer. No menu de contexto selecionem New>Hibernate Reverse Engineering File (reveng.xml).
Figura 33 – Opção Hibernate Reverse Engineering File (reveng.xml) do menu de contexto
Figura 33 – Opção Hibernate Reverse Engineering File (reveng.xml) do menu de contexto
Na caixa de diálogo, selecionem o diretório src e mantenham o nome do arquivo padrão solicitado. Cliquem no botão Next.
Figura 34 – Iniciando a criação do arquivo de configuração de engenharia reversa
Figura 34 – Iniciando a criação do arquivo de configuração de engenharia reversa
Na etapa seguinte, selecionem a configuração do console previamente criada em Console configuration. Cliquem no botão Refresh e selecionem no banco de dados a(s) tabela(s) que desejam trabalhar na engenharia reversa para utilizar com o Hibernate e confirmem no botão Include. Concluam o assistente no botão Finish.
Figura 35 – Seleção da tabela categoria para a engenharia reversa
Figura 35 – Seleção da tabela categoria para a engenharia reversa
O assistente irá gerar o arquivo de engenharia reversa. Agora iremos configurá-lo para que, na geração dos arquivos baseados na(s) tabela(s) do banco de dados, a conversão seja exatamente como desejamos.
Comecem indo na aba Type Mappings e cliquem no botão Refresh.
Figura 36 – Exibindo o banco de dados através do botão Refresh
Figura 36 – Exibindo o banco de dados através do botão Refresh
Na caixa de diálogo Select a console configuration, selecionem o console criado e confirmem no  botão OK.
Figura 37 – Seleção da configuração de console
Figura 37 – Seleção da configuração de console
Retornando para o editor, temos o banco de dados, tabela(s) e campo(s). Para que ocorra a engenharia reversa de forma correta, devemos Add cada um deles, editando o Hibernate TypeLength e também Not-Null.
Vejam  como é  mostrado na Figura 38.
Figura 38 – Configurando os tipos JDBC e  Hibernate da tabela para executar a engenharia reversa
Figura 38 – Configurando os tipos JDBC e Hibernate da tabela para executar a engenharia reversa
O resultado do arquivo configurado, visto na aba Source, em formato XML, é como o mostrado na Listagem 6.
Listagem 6 – O arquivo hibernate.revenge.xml
Retornando a view Package Explorer, vamos configurar um console Hibernate para executar o arquivo de engenharia reversa criado. Cliquem com o direito do mouse sobre o arquivo hibernate.revenge.xml e selecionem, no menu de contexto, o item Hibernate Console Configuration.
Atenção: Esta etapa não é realmente necessária quando já existe um console configurado. Entretanto, na primeira vez que configuramos um, o acesso não havia sido feito desta maneira.
Figura 39 – Seleção do item Hibernate Console Configuration no menu de contexto
Figura 39 – Seleção do item Hibernate Console Configuration no menu de contexto
Na caixa de dialogo, alterem o campo Name para ProjUtilizandoHibernateToolsAnnotations. Verifiquem se Configuration file está corretamente apresentando o arquivo hibernate.cfg.xml.
Figura 40 – Diálogo de criação da configuração do console Hibernate para a engenharia reversa
Figura 40 – Diálogo de criação da configuração do console Hibernate para a engenharia reversa
Através do botão Run As , clicando no pequeno triângulo que aponta para baixo,  encontramos um menu onde temos o item Hibernate Code Generation Configurations.
Figura 41 – Menu Run As com a opção Hibernate Code Generation Configurations
Figura 41 – Menu Run As com a opção Hibernate Code Generation Configurations
Na caixa de diálogo Hibernate Code Generation Configurations, em Hibernate Code Generation, cliquem com o direito do mouse e selecionem, no menu de contexto, o item New.
Figura 42 – Acionando o menu de contexto em Hibernate Code Generation
Figura 42 – Acionando o menu de contexto em Hibernate Code Generation
Na lateral direita, tenham ProjUtilizandoHibernateToolsAnnotations em Console configuration selecionado. Em Output directory, cliquem em Browse e selecionem o local onde será(ão) gerada(s) a(s) classe(s), neste caso.
Digitem o pacote em Package e, em reveng.xml, cliquem em Setup.
Figura 43 – Configuração inicial da aba Main em Hibernate Code Generation Configurations
Figura 43 – Configuração inicial da aba Main em Hibernate Code Generation Configurations
Ao surgir o diálogo Setup reverse engineering, cliquem em Use existing.
Figura 44 – Selecionando o botão Use existing
Figura 44 – Selecionando o botão Use existing
Selecionem o item hibernate.reveng.xml e confirmem no botão OK.
Figura 45 – Seleção do arquivo hibernate.reveng.xml
Figura 45 – Seleção do arquivo hibernate.reveng.xml
Retornando ao diálogo Hibernate Code Generation Configurations, ainda na aba Main, temos todas as informações que desejamos preenchidas, como na Figura 46.
Figura 46 – Aba Main do diálogo Hibernate Code Generation Configurations preenchido
Figura 46 – Aba Main do diálogo Hibernate Code Generation Configurations preenchido
Agora iremos na aba Exporters, ao qual iremos marcar Generate EJB 3 annotations e Domain code (.java).
Figura 47 – Opções de exportação da caixa de diálogo Hibernate Code Generation Configurations
Figura 47 – Opções de exportação da caixa de diálogo Hibernate Code Generation Configurations
Por fim, vamos clicar no botão Run para executar a engenharia reversa.
Figura 48 – Executando a engenharia reversa através do botão Run
Figura 48 – Executando a engenharia reversa através do botão Run
Neste último exemplo, o resultado é a classe Categoria sendo criada com anotações.
Considerações finais
Como vocês puderam ver, o Hibernate Tools é uma ferramenta bem interessante para aqueles que trabalham com o framework Hibernate. Seja para criar suas configurações através dos assistentes, para executar as queries HQL ou Criteria em seus editores, vale a pena  instalar e conhecer este plugin do Eclipse IDE.