Criando um aplicativo Maven Swing utilizando o Hibernate: tutorial do NetBeans IDE
Neste tutorial, você utiliza o NetBeans IDE para criar um aplicativo Java Swing a partir de um arquetipo Maven. O aplicativo utiliza o framework do Hibernate como camada de persistência para recuperar POJOs (objetos Java antigos e simples) a partir de um banco de dados relacional. Este tutorial demonstra como os assistentes no IDE podem ajudar a criar os arquivos Hibernate necessários e adicionar dependências Hibernate no POM. Depois de criar objetos Java e configurar o aplicativo para utilizar o Hibernate, você cria uma interface GUI para pesquisar e exibir dados.
O suporte ao Maven está totalmente integrado no NetBeans e o Maven 3 está incorporado com o IDE iniciando no NetBeans 7.0. É possível criar aplicativos a partir dos arquetipos Maven incorporados ou a partir de arquetipos em repositórios remotos no assistente Novo projeto. O Navegador do repositório Maven permite explorar seus repositórios Maven locais e remotos, examinar artefatos e adicionar dependências de projeto ao POM do projeto.
Para construir este aplicativo utilizando o Ant, consulte Utilizando o Hibernate em um aplicativo Java Swing.
Para construir um aplicativo Maven Java EE, consulte Criando um aplicativo corporativo com o Maven.
Conteúdo
Para seguir este tutorial, são necessários os seguintes recursos e softwares.
Antes de começar este tutorial, talvez você queira se familizar com a documentação a seguir.
Você pode baixar de um arquivo zip do projeto concluído.
Criando o banco de dados
Este tutorial utiliza um banco de dados MySQL chamado sakila. O banco de dados de amostra não é incluído quando o IDE é instalado, portanto é necessário primeiro criar o banco de dados para seguir este tutorial.
O banco de dados Sakila é uma amostra gratuita do banco de dados MySQL, disponível no site do MySQL. Para criar o banco de dados sakila, baixe e instale o plug-in do banco de dados de amostra utilizando o gerenciador de plug-ins. Depois de instalar o plug-in, é possível excluir o banco de dados sakila da janela Serviços. O banco de dados sakila é adicionado à lista de bancos de dados na caixa de diálogo Criar banco de dados MySQL.
Para obter mais informações sobre a configuração do IDE para funcionar com o MySQL, consulte o tutorial Conectando a um banco de dados MySQL.
- Abra o gerenciador de Plug-ins e instale o plug-in Sakila Sample Database.
- Depois de instalar o plug-in, inicie o servidor do banco de dados MySQL ampliando o nó Banco de dados na janela Serviços, clicando com o botão direito do mouse no nó Servidor MySQL e escolhendo Iniciar.
- Clique com o botão direito do mouse no nó Servidor MySQL e escolha Criar banco de dados.
- Selecione o banco de dados Sakila a partir da lista suspensa Novo nome de banco de dados, na caixa de diálogo Criar banco de dados MySQL. Clique em OK.
Ao clicar em OK, o IDE executará um script para criar o banco de dados Sakila e preencher as tabelas do banco de dados. Você pode ver o resultado da execução do script na janela Saída. É adicionado também um nó para o banco de dados Sakila sob o nó do Servidor MySQL. O
- Clique com o botão direito do mouse e escolha Conectar.
Ao clicar em Conectar, um nó de conexão do banco de dados do banco de dados Sakila (jdbc:mysql://localhost:3306/sakila [nome de usuário em Padrão]) será listado abaixo do nó Bancos de dados. Quando uma conexão for aberta, será possível visualizar os dados no banco de dados ampliando o nó de conexão.
Configurando o Maven
Se você ainda não criou um projeto Maven no IDE, é preciso primeiro ativar o módulo Maven no IDE. Isso pode ser feito ao selecionar um arquetipo de projeto Maven no assistente Novo Projeto. Quando você seleciona o arquetipo, o IDE ativará automaticamente o módulo. Não é preciso finalizar o assistente para ativar o Maven no IDE.
Se este for seu primeiro Projeto Maven, talvez você queira verificar as definições de configurações do Maven na janela Opções. Para completar este tutorial é preciso ter o Maven instalado em seu sistema local. Se você estiver usando o NetBeans IDE 7.0 ou 7.1, o Maven está incorporado no IDE e é instalado quando você instala o IDE. Se você estiver usando uma versão anterior do IDE, é possível efetuar o download do instalador do site do Maven.
- Selecione a categoria Miscelâneos na janela Opções e clique na aba Maven.
- Confirme se um Maven Home está especificado.
É possível usar a instalação do Maven 3 incorporada no IDE no NetBeans IDE 7.0, especficada por padrão, ou especificar a localização de uma instalação local do Maven (requer versão 2.0.9 ou posterior).
- Verifique se a localização do repositório local do Maven está correta.
- Clique em OK.
Visualizando os repositórios Maven
Os artefatos que são utilizados pelo Maven para construir todos os projetos são armazenados em seu repositório local Maven. Quando um artefato é declarado como uma dependência do projeto, o artefato é baixado para seu repositório local a partir de um dos repositórios remotos registrados.
Por padrão, diversos repositórios Maven indexados bem conhecidos são registrados e listados no navegador do repositório. Os repositórios registrados contêm a maioria dos artefatos públicos necessários para que você construa seu projeto. Na maioria dos casos, não é necessário registrar nenhum repositório adicional, a não ser que seu projeto necessite de artefatos encontrados somente em um repositório privado.
É possível utilizar o navegador do repositório Maven para visualizar o conteúdo dos repositórios locais e remotos. Qualquer artefato que esteja em seus repositórios locais ou remotos podem ser adicionados como uma dependência do projeto. O nó Repositório local é expandido para a visualização dos artefatos que estão presentes localmente. Os artefatos listados abaixo dos nós do repositório remoto podem ser adicionados como dependências do projeto, mas nem todos eles estão localmente presentes. Eles são adicionados ao repositório local somente quando são declarados como dependências do projeto.
Para abrir o navegador do repositório Maven:
- escolha Janela > Outro > Navegador do repositório Maven no menu principal.
Quando seu cursor está sobre um artefato, o IDE exibe uma dica de ferramenta com as coordenadas do artefato. É possível visualizar detalhes adicionais sobre um artefato ao clicar duas vezes no arquivo JAR do artefato no navegador.
É possível pesquisar por um artefato ao clicar no botão Localizar da barra de ferramentas do navegador do repositório Maven ou ao utilizar o campo de texto Pesquisa rápida na minibarra de ferramentas.
Para saber mais sobre como gerenciar as dependências de classpath Maven e sobre como trabalhar com repositórios Maven no IDE, consulte a seção Gerenciamento de dependência em Práticas recomendadas para o Apache Maven no NetBeans IDE.
Para assistir a uma demonstração sobre como utilizar o Visualizador de artefato, consulte o screencast Trabalhando com dependências Maven.
Criando o aplicativo Maven
Neste tutorial, é criado um projeto de aplicativo Java Swing simples denominado DVDStoreAdmin. O projeto será criado a partir de um dos arquetipos Maven incorporados e, em seguida, as configurações padrão do projeto serão modificadas.
Escolhendo um arquetipo
O assistente Novo projeto permite criar um projeto Maven a partir de um arquetipo Maven. O IDE inclui diversos arquetipos para projetos NetBeans comuns, mas também é possível localizar e escolher arquetipos em repositórios remotos no assistente. Neste exercício, utilizaremos o Arquetipo de início rápido Maven como o modelo do projeto.
- escolha Arquivo > Novo projeto (Ctrl-Shift-N).
- Selecione Aplicativo Java na categoria Maven. Clique em Próximo.
Observação. Se você estiver usando o NetBeans IDE 6.9 ou anterior, selecione Projeto Maven na categoria Maven e, a seguir, Maven Quickstart Archetype no próximo painel do assistente.

- Digite DVDStoreAdmin como nome do projeto e defina a sua localização.
- Modifique a ID de grupo padrão e a versão (opcional).
A ID de grupo e a versão serão utilizadas como as coordenadas para o artefato em seu repositório local quando o projeto for construído.
- Clique em Terminar.
Ao clicar em Terminar, o IDE cria o projeto Maven e abre o projeto na janela Projetos. O IDE cria automaticamente a classe App.java no pacote dvdstoreadmin. É possível excluir o App.java porque ele não é necessário para o aplicativo.
Nota. Se esta for a primeira vez que você cria um projeto Maven, o Maven precisará baixar alguns plug-ins e artefatos necessários para o repositório local. Isso pode levar algum tempo.
Modificando as propriedades do projeto
Quando você cria um projeto Maven utilizando o assistente, as propriedades padrão do projeto têm base no arquetipo. Em alguns casos, poderá ser necessário modificar as propriedades padrão de acordo com os requisitos de seu sistema e do projeto. Por exemplo, para este projeto, você deseja garantir que o nível do código-fonte seja definido como 1.5, porque o projeto utiliza anotações.
- Clique com o botão direito do mouse no nó do projeto e escolha Propriedades.
- Selecione a categoria Código-fonte na janela Propriedades.
- Selecione 1.5 na lista suspensa para a propriedade Código-fonte/Formato binário.
- Selecione UTF-8 na lista suspensa para a propriedade Codificação. Clique em OK.
Adicionando arquivos e dependências Hibernate
Para adicionar o suporte para Hibernate, é necessário tornar disponíveis as bibliotecas do Hibernate ao declarar os artefatos necessários como dependências no POM. O IDE inclui assistentes para ajudá-lo a criar os arquivos Hibernate necessários em seu projeto. É possível utilizar os assistentes no IDE para criar um arquivo de configuração Hibernate e uma classe de ajuda do utilitário. Se criar o arquivo de configuração Hibernate utilizando um assistente, o IDE atualiza automaticamente o POM e as dependências Hibernate para o projeto.
É possível adicionar dependências ao projeto na janela Propriedades ou ao editar diretamente o pom.xml. Para adicionar uma dependência na janela Propriedades, clique com o botão direito do mouse no nó Bibliotecas na janela Projetos e escolha Adicionar dependência no menu suspenso para abrir a caixa de diálogo Adicionar dependência. Quando uma dependência é adicionada, o IDE atualiza o POM e baixa quaisquer artefatos necessários para o repositório local, que ainda não estão localmente presentes.
Para editar diretamente o pom.xml, abra o arquivo ao expandir o nó Arquivos do projeto na janela Projetos e clique duas vezes em pom.xml.
Criando o arquivo de configuração do Hibernate
O arquivo de configuração Hibernate (hibernate.cfg.xml) contém informações sobre a conexão do banco de dados, os mapeamentos de recursos e outras propriedades da conexão. Ao criar um arquivo de configuração Hibernate utilizando um assistente, a conexão do banco de dados é especificada a partir de uma lista de conexões de bancos de dados registradas no IDE. Durante a geração do arquivo de configuração, o IDE adiciona automaticamente os detalhes da conexão e as informações de dialeto com base na conexão de banco de dados selecionada. O IDE também modifica automaticamente o POM para adicionar as dependências Hibernate necessárias. Depois de criar o arquivo de configuração, é possível editar o arquivo utilizando o editor de múltipla visualização ou editar o XML diretamente no editor XML.
- Clique com o botão direito do mouse na conexão ao banco de dados Sakila na janela Serviços e escolha Conectar.
- Clique com o botão direito do mouse no nó do Pacotes de código-fonte na janela Projetos e escolha Novo > Outro para abrir o assistente para Novo arquivo.
- Selecione o assistente Configuração do Hibernate a partir da categoria Hibernate. Clique em Próximo.
- Mantenha o nome padrão do arquivo (hibernate.cfg).
- Clique em Procurar e especifique o diretório src/main/resources como a localização (se ainda não estiver especificada). Clique em Próximo.
- Selecione a conexão sakila na lista suspensa Conexão do banco de dados. Clique em Terminar.
Quando você clicar em Terminar, o IDE abre o hibernate.cfg.xml no editor. O arquivo de configuração contém informações sobre um único banco de dados.
Se você expandir o nó Dependências na janela Projetos, é possível ver que o IDE adicionou os artefatos Hibernate necessários. O IDE lista todas as dependências diretas e transitivas necessárias para compilar o projeto no nó Dependênncias. Os artefatos que são dependências diretas (dependências que são especificadas no POM do projeto) são indicadas por ícones JAR coloridos. Um artefato é acinzentado se ele for uma dependência transitiva (um artefato que é uma dependência de uma ou mais dependências diretas).
É possível visualizar os detalhes do artefato ao clicar com o botão direito do mouse em um JAR e ao escolher Visualizar detalhes do artefato. O Visualizador de artefato contém abas que fornecem detalhes sobre o artefato selecionado. Por exemplo, a aba Básico fornece detalhes sobre as coordenadas do artefato e as versões disponíveis. A aba Gráfico fornece uma representação visual das dependências do artefato selecionado.
Também é possível utilizar a aba Gráficos para descobrir e solucionar conflitos de versão entre dependências.
Modificando o arquivo de configuração do Hibernate
Neste exercício, você editará as propriedades padrão especificadas no hibernate.cfg.xml para habilitar o registro da depuração para instruções SQL. Este exercício é opcional.
- Abra o hibernate.cfg.xml na aba Desenho. É possível abrir o arquivo expandindo o nó Arquivos de configuração na janela Projetos e clicando duas vezes em hibernate.cfg.xml.
- Expanda o nó Propriedades da configuração em Propriedades opcionais.
- Clique em Adicionar para abrir a caixa de diálogo Adicionar propriedade do Hibernate.
- Na caixa de diálogo, selecione a propriedade hibernate.show_sql e defina o valor para true. Clique em OK. Isso permite o registro de depuração das instruções SQL.

- Clique em Adicionar no nó Propriedades diversas e selecione hibernate.query.factory_class na lista suspensa Nome da propriedade.
- Digite org.hibernate.hql.classic.ClassicQueryTranslatorFactory como o Valor da propriedade. Clique em OK.
Se clicar na aba XML no editor, você pode ver o arquivo na visualização XML. O arquivo deve ter uma aparência semelhante a esta:
<hibernate-configuration>
<session-factory name="session1">
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sakila</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">######</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
</session-factory>
</hibernate-configuration>
- Salve as alterações feitas no arquivo.
Quando você executar seu projeto, poderá visualizar a consulta SQL impressa na janela Saída do IDE.
Criando o arquivo de ajuda HibernateUtil.java
Para utilizar o Hibernate, é necessário criar uma classe de ajuda que lide com a inicialização e que acesse o SessionFactory do Hibernate para obter um objeto de sessão. A classe chama o método configure() do Hibernate, carrega o arquivo de configuração hibernate.cfg.xml e, em seguida, constroi o SessionFactory para obter o objeto de sessão.
Nesta seção, o assistente para Novo arquivo será utilizado a fim de criar a classe helper HibernateUtil.java.
- Clique com o botão direito do mouse no nó do pacote de códigos-fonte e selecione Novo > Outro para abrir o assistente para Novo arquivo.
- Selecione Hibernate na lista Categorias e HibernateUtil.java na lista Tipos de arquivo. Clique em Próximo.
- Digite HibernateUtil como nome da classe e sakila.util como nome do pacote. Clique em Terminar.
Ao clicar em Terminar, o HibernateUtil.java é aberto no editor. É possível fechar o arquivo porque não precisa editá-lo.
Gerando arquivos de mapeamento Hibernate e classes Java
Neste tutorial, é utilizado um POJO (objeto Java antigo e simples), Actor.java, para representar os dados na tabela ACTOR do banco de dados. A classe especifica os campos para as colunas nas tabelas e utiliza setters e getters simples para recuperar e escrever dados. Para mapear o Actor.java para a tabela ACTOR, é possível utilizar um arquivo de mapeamento do Hibernate ou anotações na classe.
É possível utilizar o assistente Engenharia reversa e os Arquivos de mapeamento do Hibernate e POJOs obtidos a partir assistente de banco de dados para criar vários POJOs e arquivos de mapeamento com base nas tabelas selecionadas do banco de dados. Alternativamente, é possível utilizar assistentes no IDE para ajudar a criar POJOs individuais e arquivos de mapeamento a partir do rascunho.
Nota. Ao criar arquivos para várias tabelas, você provavelmente desejará utilizar os assistentes. Neste tutorial, só é necessários criar um POJO e um arquivo de mapeamento, portanto, é muito mais fácil criar os arquivos individualmente. É possível consultar as etapas para a criação dos POJOs e arquivos de mapeamento individualmente no final deste tutorial.
Criar o arquivo de engenharia reversa
Para utilizar os POJOs e os Arquivos de mapeamento do assistente Banco de dados, primeiro é preciso criar o arquivo de engenharia reversa reveng.xml no diretório src/main/resources, onde foi criado o hibernate.cfg.xml.
- Clique com o botão direito do mouse no nó do pacote de códigos-fonte e selecione Novo > Outro para abrir o assistente para Novo arquivo.
- Selecione Hibernate na lista Categorias e o assistente Engenharia reversa do Hibernate na lista Tipos de arquivo. Clique em Próximo.
- Digite hibernate.reveng como o nome do arquivo.
- Especifique src/main/resources como a localização. Clique em Próximo.
- Selecione actor no painel Tabelas disponíveis e clique em Adicionar. Clique em Terminar.
O assistente gera um arquivo de engenharia reversa hibernate.reveng.xml. É possível fechar o arquivo de engenharia reversa porque não será necessário editar o arquivo.
Observação. Este projeto requer uma biblioteca jar do conector do MySQL (mysql-connector-jar-5.1.13.jar, por exemplo). Se um JAR adequado não estiver listado como dependência do projeto no nó Dependências, é possível adicionar a dependência clicando com o botão direito do mouse no nó Dependências e escolhendo Adicionar dependência.
Criando arquivos de mapeamento Hibernate e POJOs a partir de um banco de dados
Os arquivos de mapeamento do Hibernate e os POJOs obtidos a partir de um Assistente de banco de dados geram arquivos com base em tabelas em um banco de dados. Quando você utiliza o assistente, o IDE gera os POJOs e os arquivos de mapeamento com base nas tabelas do banco de dados especificadas em hibernate.reveng.xml e, em seguida, adiciona as entradas do mapeamento em hibernate.cfg.xml. Ao utiliza o assistente, é possível escolher os arquivos que deseja que o IDE gere (somente os POJOs, por exemplo) e selecionar as opções de geração de código (gerar código que utilize anotações EJB 3, por exemplo).
- Clique com o botão direito do mouse no nó Pacotes de código-fonte na janela Projetos e escolha Novo > Outro para abrir o assistente para Novo arquivo.
- Selecione Arquivos de mapeamento do Hibernate e POJOs provenientes de um banco de dados na categoria Hibernate. Clique em Próximo.
- Selecione hibernate.cfg.xml na lista suspensa Arquivo de configuração do Hibernate, se não estiver selecionado.
- Selecione hibernate.reveng.xml na lista suspensa Arquivo de engenharia reversa do Hibernate, se não estiver selecionado.
- Certifique-se de que as opções Código do domínio e Mapeamentos XML do Hibernate estejam selecionadas.
- Digite sakila.entity para o nome do Pacote. Clique em Terminar.
Ao clicar em Terminar, o IDE gera o POJO Actor.java com todos os campos necessários no diretório src/main/java/sakila/entity. O IDE também gera o arquivo de mapeamento do Hibernate no diretório src/main/resources/sakila/entity e, em seguida, adiciona a entrada do mapeamento em hibernate.cfg.xml.
Agora que você possui o POJO e os arquivos necessários relacionados ao Hibernate, poderá criar um front-end simples Java GUI para o aplicativo. Também é possível criar e adicionar uma consulta HQL que consulte o banco de dados para recuperar os dados. Nesse processo, também utilizamos o editor HQL para construir e testar a consulta.
Criando a GUI do aplicativo
Neste exercício, um formulário JFrame simples será criado com alguns campos para a entrada e exibição de dados. Também será adicionado um botão que disparará uma consulta do banco de dados para recuperar os dados.
Se você não estiver familiarizado com o uso do Construtor de GUI para criar formulários, talvez queira examinar o tutorial Introdução à construção GUI.
Criando o formulário JFrame
- Clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Novo > Outro para abrir o assistente para Novo arquivo.
- Selecione Formulário JFrame na categoria Formulários de GUI Swing. Clique em Próximo.
- Digite DVDStoreAdmin como o nome da classe e digite sakila.ui como Pacote. Clique em Terminar.
Quando você clica em Terminar, o IDE cria a classe e abre formulário JFrame na visualização Desenho do editor.
Adicionando elementos ao formulário
Agora é necessário adicionar os elementos UI ao formulário. Quando o formulário estiver aberto na visualização Desenho do editor, a paleta será mostrada no lado direito do IDE. Para adicionar um elemento ao formulário, arraste o elemento da Paleta para a área do formulário. Depois de adicionar um elemento ao formulário, será necessário modificar o valor padrão da propriedade Nome da variável desse elemento.
- Arraste um elemento Rótulo a partir da Paleta e altere o texto para ActorProfile.
- Arraste um elemento Rótulo a partir da Paleta e altere o texto para Nome.
- Arraste um elemento Campo de texto perto do rótulo Nome e exclua o texto padrão.
Quando o texto padrão é excluído, o campo de texto se encolhe. É possível redimensionar o campo de texto em outro momento ao ajustar o alinhamento dos elementos do formulário.
- Arraste um elemento Rótulo a partir da Paleta e altere o texto para Sobrenome.
- Arraste um elemento Campo de texto para perto do rótulo Sobrenome e exclua o texto padrão.
- Arraste um elemento de Botão a partir da Paleta e altere o texto para Query.
- Arraste um elemento Tabela a partir da Paleta para dentro do formulário.
- Modifique os valores do Nome da variável dos seguintes elementos UI de acordo com os valores na tabela a seguir.
É possível modificar o valor do Nome da variável de um elemento clicando com o botão direito do mouse em elemento na visualização Desenho e, em seguida, escolhendo Alterar nome da variável. Alternativamente, é possível alterar o Nome da variável diretamente na janela Inspetor.
Não é necessário atribuir os valores do Nome da variável aos elementos do Rótulo.
| Campo de texto Nome | firstNameTextField |
| Campo de texto Sobrenome | lastNameTextField |
| Botão Consulta | queryButton |
| Tabela | resultTable |
- Redimensione os campos de texto e alinhe os elementos do formulário.
É possível habilitar a propriedade Redimensionável na horizontal dos campos de texto para garantir que os campos de texto sejam redimensionados com a janela e que o espaçamento entre os elementos permaneçam constantes.
- Salve as alterações.
Na visualização Desenho, seu formulário deve parecer com a imagem a seguir.
Agora que você tem um formulário, precisa criar o código para atribuir eventos aos elementos do formulário. No próximo exercício, consultas serão criadas com base na Linguagem da consulta do Hibernate para recuperar dados. Depois de construir as consultas, os métodos serão adicionados ao formulário para invocar a consulta apropriada quando o botão Consulta for pressionado.
Criando a consulta no editor de consultas HQL
No IDE, é possível construir e testar consultas com base na Linguagem de consulta do Hibernate (HQL) utilizando o Editor de consultas HQL. À medida que a consulta é inserida, o editor mostra a consulta SQL equivalente (traduzida). Ao clicar no botão "Executar consulta HQL" na barra de ferramentas, o IDE executará a consulta e mostrará os resultados na parte inferior do editor.
Neste exercício, o Editor HQL é utilizado para construir consultas HQL simples que recuperam uma lista de detalhes de atores com base na correspondência do nome ou sobrenome. Antes de adicionar a consulta à classe, você utilizará o Editor de consulta HQL para testar se a conexão está funcionando corretamente e se a consulta produz os resultados desejados. Antes de executar a pesquisa, é preciso compilar o aplicativo.
- Clique com o botão direito do mouse no nó do projeto e escolha Construir.
Ao clicar em Compilar, o IDE baixará os artefatos necessários para seu repositório Maven local.
- Expanda o nó do pacote de código-fonte <pacote padrão> sob o nó Outros códigos-fonte na janela Projetos.
- Clique com o botão direito do mouse em hibernate.cfg.xml e escolha Executar consulta HQL para abrir o Editor HQL.
- Teste a conexão inserindo from Actor no Editor de consultas HQL. Clique no botão Executar consulta HQL (
) na barra de ferramentas.
Ao clicar em Executar consulta HQL, deverá visualizar os resultados da consulta no painel inferior do Editor de consultas HQL.
- Digite a consulta a seguir no Editor de consultas HQL e clique em Executar consulta HQL para verificar os resultados da consulta quando a string de pesquisa for "PE".
from Actor a where a.firstName like 'PE%'
A consulta retorna uma lista de detalhes de atores para aos atores cujos nomes começam com "PE".
Ao clicar no botão SQL acima dos resultados, deverá ser exibida a seguinte consulta SQL equivalente.
select actor0_.actor_id as col_0_0_ from sakila.actor actor0_ where (actor0_.first_name like 'PE%' )
- Abra uma nova guia do Editor de consulta HQL e insira a consulta a seguir no painel do editor. Clique em Executar consulta HQL.
from Actor a where a.lastName like 'MO%'
A consulta retorna uma lista de detalhes de atores para os atores cujos sobrenomes começam com "MO".
Testar as consultas mostra que as elas retornam os resultados desejados. A próxima etapa é implementar as consultas no aplicativo de modo que a consulta apropriada seja invocada clicando-se no botão Consulta no formulário.
Adicionando a consulta ao formulário
Agora é necessário modificar o DVDStoreAdmin.java para adicionar as strings de consulta e criar os métodos para construir e invocar uma consulta que incorpore as variáveis de entrada. É necessário também modificar o manipulador de eventos do botão para invocar a consulta correta e adicionar um método para exibir os resultados da consulta na tabela.
- Abra DVDStoreAdmin.java e clique na aba Código-fonte.
- Adicione as seguintes strings de consulta (em negrito) à classe.
public DVDStoreAdmin() {
initComponents();
}
private static String QUERY_BASED_ON_FIRST_NAME="from Actor a where a.firstName like '";
private static String QUERY_BASED_ON_LAST_NAME="from Actor a where a.lastName like '";
É possível copiar as consultas das guias do Editor de consulta HQL para o campo e, em seguida, modificar o código.
- Adicione os métodos a seguir para criar a consulta com base na string de entrada do usuário.
private void runQueryBasedOnFirstName() {
executeHQLQuery(QUERY_BASED_ON_FIRST_NAME + firstNameTextField.getText() + "%'");
}
private void runQueryBasedOnLastName() {
executeHQLQuery(QUERY_BASED_ON_LAST_NAME + lastNameTextField.getText() + "%'");
}
Esses métodos chamam o método executeHQLQuery() e cria a consulta combinando a string de consulta com o usuário que inseriu a string de pesquisa.
- Adicione o método executeHQLQuery().
private void executeHQLQuery(String hql) {
try {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Query q = session.createQuery(hql);
List resultList = q.list();
displayResult(resultList);
session.getTransaction().commit();
} catch (HibernateException he) {
he.printStackTrace();
}
}
O método executeHQLQuery() chama o Hibernate para executar a consulta selecionada. Esse método utiliza a classe de utilitário HibernateUtil.java para obter a Sessão Hibernate.
- Corrija suas importações para adicionar instruções de importação para as bibliotecas Hibernate (org.hibernate.Query, org.hibernate.Session) e java.util.List.
- Crie um manipulador de eventos do botão Consulta alternando para a visualização Desenho e clicando duas vezes no botão Consulta.
O IDE cria o método queryButtonActionPerformed e exibe o método na visualização Código-fonte.
- Modifique o método queryButtonActionPerformed na visualização Código-fonte adicionando o código a seguir de modo que uma consulta seja executada quando o usuário clicar no botão.
private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(!firstNameTextField.getText().trim().equals("")) {
runQueryBasedOnFirstName();
} else if(!lastNameTextField.getText().trim().equals("")) {
runQueryBasedOnLastName();
}
}
- Adicione o método a seguir para exibir os resultados na JTable.
private void displayResult(List resultList) {
Vector<String> tableHeaders = new Vector<String>();
Vector tableData = new Vector();
tableHeaders.add("ActorId");
tableHeaders.add("FirstName");
tableHeaders.add("LastName");
tableHeaders.add("LastUpdated");
for(Object o : resultList) {
Actor actor = (Actor)o;
Vector<Object> oneRow = new Vector<Object>();
oneRow.add(actor.getActorId());
oneRow.add(actor.getFirstName());
oneRow.add(actor.getLastName());
oneRow.add(actor.getLastUpdate());
tableData.add(oneRow);
}
resultTable.setModel(new DefaultTableModel(tableData, tableHeaders));
}
- Corrija as importações (Ctrl+Shift+I) para adicionar o java.util.Vector e salve as alterações.
Depois de salvar o formulário, é possível executar o projeto.
Executando um projeto Maven
Agora que a codificação foi concluída, é possível construir o projeto e iniciar o aplicativo. Quando um projeto Maven é construído no IDE, o Maven lê o POM do projeto para identificar as dependências do projeto. Todos os artefatos especificados como dependências precisam estar em seu repositório local do Maven para que o projeto possa ser construído. Se um artefato necessário não está no repositório local, o Maven retirará o artefato do repositório remoto antes de tentar construir e executar o projeto. Após construir o projeto, o Maven instalará o binário resultante como um artefato em seu repositório local.
Notas.
- Construir e executar um projeto pela primeira vez pode levar algum tempo se o IDE precisar retirar quaisquer dependências do projeto. As construções subsequentes serão muito mais rápidas.
- Para executar este aplicativo, primeiro é preciso especificar a classe principal.
Para compilar e iniciar este aplicativo, execute as tarefas a seguir.
- Clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Propriedades.
- Selecione a categoria Executar, na caixa de diálogo Propriedades do projeto.
- Digite sakila.ui.DVDStoreAdmin como a Classe principal. Clique em OK.
Alternativamente, é possível clicar no botão Procurar e escolher a classe principal na caixa de diálogo.
- Clique em Executar projeto principal na barra de ferramentas principal para iniciar o aplicativo.
Quando a ação Executar é chamada em um projeto Maven no IDE, o IDE executa os objetivos Maven associados com a ação Executar. O IDE possui objetivos padrão vinculados às ações do IDE de acordo com o pacote do projeto. É possível visualizar os objetivos vinculados à ação Executar no painel Ações da janela Propriedades do projeto
É possível personalizar a vinculação de objetivos às ações no painel Ações da janela Propriedades do projeto.
O formulário GUI é aberto quando o aplicativo é iniciado. Digite uma string de pesquisa no campo de texto Nome ou Sobrenome e clique em Consulta para pesquisar um ator e ver os detalhes.
Se você observar a janela Saída do IDE, poderá visualizar a consulta SQL que recuperou os resultados exibidos.
Baixando o projeto da solução
É possível baixar a solução para este tutorial como um projeto das seguintes formas:
- Faça o download de um arquivo zip do projeto acabado.
- Faça o check-out do código-fonte do projeto das amostras do NetBeans ao executar as etapas a seguir:
- Escolha Equipe > Subversão > Checkout no menu principal.
- Na caixa de diálogo Checkout, insira o seguinte URL do repositório:
https://svn.netbeans.org/svn/samples~samples-source-code
Clique em Próximo.
- Clique em Procurar para abrir a caixa de diálogo Pastas de repositório do navegador.
- Expanda o nó raiz e selecione samples/java/DVDStoreAdmin-Maven. Clique em OK.
- Especifique a pasta local para o código-fonte (a pasta local precisa estar vazia).
- Clique em Terminar.
Quando você clica em Terminar, o IDE inicializa a pasta local como um repositório Subversion e faz check-out do código-fonte do projeto.
- Clique em Abrir projeto na caixa de diálogo que aparece quando a retirada estiver completada.
Notas.
- As etapas de check-out de códigos-fonte a partir do Kenai se aplicam somente ao NetBeans IDE 6.7 e 6.8.
- É necessário um cliente Subversion para fazer check-out dos códigos-fonte a partir do Kenai. Para saber mais sobre a instalação do Subversion, consulte a seção Configurando o Subversion no Guia do Subversion no NetBeans IDE.
Criando POJOs e arquivos de mapeamento individualmente
Como um POJO é uma classe Java simples, é possível utilizar o assistente Nova classe Java para criar a classe e, em seguida, editar a classe no editor de código-fonte para adicionar os campos, getters e setters necessários. Depois de criar o POJO, utilize um assistente para criar um arquivo de mapeamento do Hibernate para associar a classe à tabela e adicionar informações de mapeamento ao hibernate.cfg.xml. Ao criar um arquivo de mapeamento a partir do rascunho, é necessário associar os campos às colunas no editor XML.
Nota. Este exercício é opcional e descreve como criar o POJO, o arquivo de mapeamento criado com os arquivos de mapeamento Hibernate e POJOs obtidos do assistente de Banco de dados.
- Clique com o botão direito do mouse no nó Pacotes de códigos-fonte na janela Projetos e escolha Novo > Classe Java para abrir o novo assistente para Classe Java.
- No assistente, digite Actor para o nome da classe e sakila.entity para o pacote. Clique em Terminar.
- Faça as seguintes alterações (exibidas em negrito) nas classes para implementar a interface Serializable e adicionar campos nas colunas da tabela.
public class Actor implements Serializable {
private Short actorId;
private String firstName;
private String lastName;
private Date lastUpdate;
}
- Gere os getters e setters para os campos colocando o cursor de inserção no editor de código-fonte, digitando Alt-Insert e, em seguida, selecionando Getter e setter.
- Na caixa de diálogo Gerar getters e setters, selecione todos os campos e clique em Gerar.
Na caixa de diálogo Gerar getters e setters, é possível utilizar a seta para cima no teclado para mover o item selecionado para o nó Ator e pressionar a barra de espaço para selecionar todos os campos em Ator.
- Corrija as importações e salve as alterações.
Depois de criar o POJO para a tabela, você desejará criar um arquivo de mapeamento do Hibernate para Actor.java.
- Clique com o botão direito do mouse no nó pacotes de código-fonte sakila.entity, na janela Projetos, e escolha Novo > Outro para abrir o assistente Novo arquivo.
- Selecione o assistente Mapeamento do Hibernate na categoria Hibernate. Clique em Próximo.
- Digite Actor.hbm como o nome do arquivo e defina a pasta como src/main/resources/sakila/entity . Clique em Próximo.
- Digite sakila.entity.Actor para a classe a ser mapeada.
- Selecione actor na lista suspensa Tabela do banco de dados, se não estiver selecionado. Clique em Terminar.
Ao clicar em Terminar, o arquivo de mapeamento do Hibernate Actor.hbm.xml será aberto no editor de código-fonte. O IDE também adiciona automaticamente uma entrada para o recurso de mapeamento para hibernate.cfg.xml. É possível visualizar os detalhes da entrada ampliando o nó Mapeamento, na visualização Desenho do hibernate.cfg.xml ou na visualização XML. A entrada mapping na visualização XML será semelhante a:
<mapping resource="sakila/entity/Actor.hbm.xml"/>
</session-factory>
</hibernate-configuration>
- Associe os campos Actor.java às colunas na tabela ACTOR fazendo as seguintes alterações (em negrito) no Actor.hbm.xml.
<hibernate-mapping>
<class name="sakila.entity.Actor" table="actor">
<id name="actorId" type="java.lang.Short">
<column name="actor_id"/>
<generator class="identity"/>
</id>
<property name="firstName" type="string">
<column length="45" name="first_name" not-null="true"/>
</property>
<property name="lastName" type="string">
<column length="45" name="last_name" not-null="true"/>
</property>
<property name="lastUpdate" type="timestamp">
<column length="19" name="last_update" not-null="true"/>
</property>
</class>
</hibernate-mapping>
É possível utilizar o recurso autocompletar de código no editor para completar os valores ao modificar o arquivo de mapeamento.
Nota: por padrão, o elemento class gerado tem uma aba de fechamento. Como é necessário adicionar elementos de propriedade entre as marcações de abertura e fechamento do elemento class, é necessário fazer as alterações a seguir (exibidas em negrito). Depois de fazer as alterações, será possível utilizar o recurso autocompletar de código entre as marcações class.
<hibernate-mapping>
<class name="sakila.entity.Actor" table="actor">
</class>
</hibernate-mapping>
- Clique no botão Validar XML na barra de ferramentas e salve as alterações.
A criação de POJOs individuais e arquivos de mapeamento do Hibernate pode ser um modo conveniente de personalizar ainda mais seu aplicativo.
Consulte também
Para obter mais informações sobre a criação de aplicativos GUI Swing, consulte os tutoriais a seguir.