Академический Документы
Профессиональный Документы
Культура Документы
Neste tutorial, voc usa o NetBeans IDE para criar e fazer o deployment de um aplicativo Java Swing que exibe dados a partir de um banco de dados. O aplicativo usa o framework do Hibernate como camada de persistncia para recuperar POJOs (objetos Java antigos e simples) a partir de um banco de dados relacional. O Hibernate o framework que fornece ferramentas para o mapeamento relacional de objeto (ORM). O tutorial demonstra o suporte para o framework do Hiberrnar no IDE e como usar os assistentes para criar os arquivos necessrios do Hibernate. Depois de criar objetos Java e configurar o aplicativo para usar o Hibernate, voc cria uma interface GUI para a pesquisa e exibio dos dados. Neste tutorial, voc constri um aplicativo de administrao corporativo para a aplicativo Web de Loja de DVDs. Este tutorial abrange como criar um aplicativo que permita a consulta do perfil de um ator com base na correspondncia com o primeiro ou ltimo nome. Se voc desejar, poder ampliar o aplicativo para consultar os detalhes de um filme e adicionar/atualizar/excluir itens. Este tutorial usa o MySQL e o banco de dados Sakila, mas voc pode usar qualquer servidor de banco de dados compativel com aplicativos Hibernate. O banco de dados Sakila um banco de dados de amostra que pode ser obtido por download no site MySQL. As informaes para a configurao do banco de dados Sakila so fornecidas nas sees a seguir. Antes de comear este tutorial, talvez voc queira se familizar com a documentao a seguir.
A documentao do Hibernate em hibernate.org. Introduo construo de GUIs Tutorial Conectando a um banco de dados MySQL.
Para construir este aplicativo usando o Maven, consulte Criando um aplicativo Maven Swing usando o Hibernate. Contedo
Criando o banco de dados Criando o projeto de aplicativo Java Swing Adicionando o suporte ao Hibernate ao projeto o Criando o arquivo de configurao do Hibernate o Modificando o arquivo de configurao do Hibernate o Criando o arquivo de ajuda HibernateUtil.java Gerando arquivos de mapeamento Hibernate e classes Java o Criando o arquivo de engenharia reversa o Criando arquivos de mapeamento Hibernate e POJOs a partir de um banco de dados Criando a GUI do aplicativo o Criando o formulrio JFrame o Adicionando elementos ao formulrio Criando a consulta no editor de consultas HQL Adicionando a consulta ao formulrio Executando o projeto o Baixando o projeto da soluo Criando POJOs e mapeando arquivos individualmente(Opcional)
Para seguir este tutorial, voc precisa dos seguintes recursos e softwares.
Software ou recurso NetBeans IDE Java Development Kit (JDK) Verso necessria 6.8, 6.9, 7.0, 7.1, Java verso 6
Servidor de banco de dados MySQL verso 5.x Banco de dados Sakila plugin disponvel na Central de Atualizaes
Quando voc clicar em OK, um n do Salkila ser exibido sob o n Servidor MySQL.
5. Clique com o boto direito do mouse e escolha Conectar.
Quando voc clicar em Conectar, um n de conexo do banco de dados do banco de dados Sakila (jdbc:mysql://localhost:3306/sakila [nome de usurio em Padro]) ser apresentado sob o n Bancos de dados. Quando uma conexo for aberta, voc poder visualizar os dados no banco de dados ampliando o n de conexo.
Quando voc clicar em Terminar, o IDE criar o projeto de aplicativo Java. O projeto no tem uma classe principal. Voc criar um formulrio e o definir como classe principal.
Quando voc clicar em Terminar, o IDE abrir o hibernate.cfg.xml no editor de cdigo-fonte. O IDE cria o arquivo de configurao na raiz do classpatch contextual do aplicativo (na janela Arquivos, WEBINF/classes). Na janela Projetos, o arquivo est localizado no pacote de cdigo-fonte <pacote padro>. O arquivo de configurao contm informaes sobre um nico banco de dados. Se planeja conectar a vrios bancos de dados, voc pode criar vrios arquivos de configurao no projeto, um para cada servidor de banco de dados; porm, por padro, a classe utilitrio de ajuda usar o arquivo hibernate.cfg.xml que est na localizao raiz. Se voc expandir o n Bibliotecas na janela Projetos, observar que o IDE acrescentou os arquivos JAR do Hibernate obrigatrios e o JAR do conector MySQL.
4. Na caixa de dilogo, selecione a propriedade hibernate.show_sql e defina o valor para true. Clique em OK. Isso permite o registro de depurao das declaraes SQL.
5. Clique em Adicionar no n Propriedades diversas e selecione hibernate.query.factory_class na lista suspensa Nome da propriedade. 6. Selecione org.hibernate.hql.classic.ClassicQueryTranslatorFactory como o Valor da propriedade. Clique em OK.
Observo para o NetBeans IDE 6.9. preciso digitar org.hibernate.hql.classic.ClassicQueryTranslatorFactory como o Valor da propriedade. No NetBeans IDE 6.9, o valor da propriedade na lista suspensa para a classe de fbrica est incorreto. Se clicar na aba XML no editor, voc pode ver o arquivo na visualizao XML. O arquivo deve ter uma aparncia 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.ClassicQueryTransl atorFactory</property> </session-factory> </hibernate-configuration>
Quando voc executar seu projeto, poder visualizar a consulta SQL impressa na janela Sada do IDE.
Hibernate, carrega o arquivo de configurao hibernate.cfg.xml e, em seguida, constri o SessionFactory para obter o objeto de sesso. Nesta seo, voc usa o assistente para Novo arquivo a fim de criar a classe helper HibernateUtil.java.
1. Clique com o boto direito do mouse no n do pacote de cdigos-fonte e selecione Novo > Outro para abrir o assistente para Novo arquivo. 2. Selecione Hibernate na lista Categorias e HibernateUtil.java na lista Tipos de arquivo. Clique em Prximo. 3. Insira HibernateUtil como nome da classe e sakila.util como nome do pacote. Clique em Terminar.
Quando voc clicar em Terminar, o HibernateUtil.java ser aberto no editor. Voc pode fechar o arquivo porque no precisa edit-lo.
ser utilizado, para filtrar as tabelas que no sero usadas e para especificar como os tipos JDBC so mapeados para tipos Hibernate.
1. Clique com o boto direito do mouse no n do pacote de cdigos-fonte e selecione Novo > Outro para abrir o assistente para Novo arquivo. 2. Selecione Hibernate na lista Categorias e o assistente Engenharia reversa do Hibernate a partir da lista Tipos de arquivos. Clique em Prximo. 3. Digite hibernate.reveng como o nome do arquivo. 4. Mantenha o padro src como a Localizao. Clique em Prximo. 5. Selecione actor no painel Tabelas disponveis e clique em Adicionar. Clique em Terminar.
O assistente gera um arquivo de engenharia reversa hibernate.reveng.xml. Voc pode fechar o arquivo de engenharia reversa porque no precisar editar o arquivo.
Quando voc clica em Terminar, o IDE gera o POJO Actor.java com todos os campos necessrios, gerando tambm um arquivo de mapeamento Hibernate e adicionando a entrada de mapeamento ao hibernate.cfg.xml. Agora que voc tem o POJO e os arquivos necessrios relacionados ao Hibernate, poder criar um front-end simples de GUI Java para o aplicativo. Voc tambm poder criar e adicionar uma consulta HQL que pesquise o banco de dados para recuperar os dados. Nesse processo, tambm usamos o editor HQL para construir e testar a consulta.
Quando voc clicar em Terminar, o IDE criar a classe e abrir o formulrio JFrame na visualizao Desenho do editor.
Voc pode modificar o valor do Nome da varivel de um elemento clicando com o boto direito do mouse no elemento na visualizao Desenho e, em seguinda, escolhendo Alterar nome da varivel. De modo alternativo, voc pode alterar o Nome da varivel diretamente na janela Inspetor. Voc no precisa atribuir os valores do Nome da varivel aos elementos do Rtulo.
Elemento
Nome da varivel
Campo de texto First Name firstNameTextField Campo de texto Last Name lastNameTextField Boto Consulta Tabela
queryButton resultTable
9. Salve as alteraes.
Agora que voc tem um formulrio, precisa criar o cdigo para atribuir eventos aos elementos do formulrio. No prximo exerccio, voc construir consultas com base no Idioma da consulta do Hibernate para recuperar dados. Depois de construir as consultas, voc adicionar mtodos ao formulrio para invocar a consulta apropriada quando o boto Consulta for pressionado.
classe, voc utilizar o Editor de consulta HQL para testar se a conexo est funcionando corretamente e se a consulta produz os resultados desejados. Antes de executar a pesquisa, preciso compilar o aplicativo.
1. Clique com o boto direito do mouse no n do projeto e escolha Construir. 2. Amplie o n de pacote de cdigo-fonte <pacote padro> na janela Projetos. 3. Clique com o boto direito do mouse em hibernate.cfg.xml e escolha Executar consulta HQL para abrir o Editor HQL. 4. Teste a conexo inserindo from Actor no Editor de consultas HQL. Clique no boto Executar consulta HQL ( ) na barra de ferramentas.
Quando voc clicar em Executar consulta HQL, dever visualizar os resultados da consulta no painel inferior do Editor de consultas HQL.
5. 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 comeam com "PE". Ao clicar no boto 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%' )
6. 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 comeam com "MO".
Testar as consultas mostra que as elas retornam os resultados desejados. A prxima etapa implementar as consultas no aplicativo de modo que a consulta apropriada seja invocada clicando-se no boto Consulta no formulrio.
possvel copiar as consultas das guias do Editor de consulta HQL para o campo e, em seguida, modificar o cdigo.
8. Adicione os mtodos a seguir para criar a consulta com base na string de entrada do usurio.
9. private void runQueryBasedOnFirstName() { 10. executeHQLQuery(QUERY_BASED_ON_FIRST_NAME + firstNameTextField.getText() + "%'"); 11. } 12. 13. private void runQueryBasedOnLastName() { 14. executeHQLQuery(QUERY_BASED_ON_LAST_NAME + lastNameTextField.getText() + "%'"); }
Esses mtodos chamam o mtodo executeHQLQuery() e cria a consulta combinando a string de consulta com o usurio que inseriu a string de pesquisa.
15. Adicione o mtodo executeHQLQuery().
16. private void executeHQLQuery(String hql) { 17. try { 18. Session session = HibernateUtil.getSessionFactory().openSession(); 19. session.beginTransaction(); 20. Query q = session.createQuery(hql); 21. List resultList = q.list(); 22. displayResult(resultList); 23. session.getTransaction().commit(); 24. } catch (HibernateException he) { 25. he.printStackTrace(); 26. } }
O mtodo executeHQLQuery() chama o Hibernate para executar a consulta selecionada. Esse mtodo usa a classe de utilitrio HibernateUtil.java para obter a Sesso Hibernate.
27. Corrija suas importaes e adicione declaraes para as bibliotecas Hibernate (org.hibernate.Query, org.hibernate.Session) e java.util.List. 28. Crie um manipulador de eventos do boto Consulta alternando para a visualizao Desenho e clicando duas vezes no boto Consulta.
Executando o projeto
Agora que a codificao foi terminada, possvel iniciar o aplicativo. Antes de executar o projeto, preciso especificar a Classe principal do projeto na caixa de dilogo Propriedades do projeto. Se nenhuma Classe principal tiver sido especificada, voc solicitado a defini-la na primeira vez que executar o aplicativo.
1. Clique com o boto direito do mouse no n do projeto na janela Projetos e escolha Propriedades. 2. Selecione a categoria Executar, na caixa de dilogo Propriedades do projeto. 3. Insira sakila.ui.DVDStoreAdmin como a Classe principal. Clique em OK.
De modo alternativo, voc pode clicar no boto Procurar e escolher a classe principal na caixa de dilogo.
4. Clique em Executar projeto principal na barra de ferramentas principal para iniciar o aplicativo.
Insira uma string de pesquisa no campo de texto First Name ou Last Name e clique em Consulta para pesquisar um ator e exibir os detalhes.
Se voc observar a janela Sada do IDE, poder visualizar a consulta SQL que recuperou os resultados exibidos.
3. 4. 5. 6.
Clique em Prximo. Clique em Navegador para abrir a caixa de dilogo Pasta de repositrio do navegador. Expanda o n raiz e selecione samples/java/DVDStoreAdmin-Ant. Clique em OK. Especifique a pasta local para o cdigo-fonte (a pasta local precisa estar vazia). Clique em Terminar.
Ao clicar em Terminar, o IDE inicializa a pasta local como um repositrio Subverso e verifica os cdigos fonte do projeto.
7. Clique em Abrir projeto na caixa de dilogo que aparece quando a retirada estiver completada.
Observao. necessrio um cliente Subversion para retirar o cdigo-fonte. Para saber mais sobre a instalao do Subversion, consulte a seo Configurando o Subversion no Guia do Subversion no NetBeans IDE.
necessrios. Depois de criar o POJO, use um assistente para criar um arquivo de mapeamento do Hibernate para associar a classe tabela e adicionar informaes de mapeamento ao hibernate.cfg.xml. Quando voc cria um arquivo de mapeamento a partir do rascunho, necessrio associar os campos s colunas no editor XML. Observao. Este exerccio opcional e descreve como criar o POJO e o arquivo de mapeamento que voc criou com os arquivos de mapeamento Hibernate e POJOs obtidos do Assistente de banco de dados.
1. Clique com o boto direito do mouse no n Pacotes de cdigos-fonte na janela Projetos e escolha Novo > Classe Java para abrir o novo assistente para Classe Java. 2. No assistente, insira Actor para o nome da classe e sakila.entity para o pacote. Clique em Terminar. 3. Faa as seguintes alteraes (exibidas em negrito) nas classes para implementar a interface serializvel e adicionar campos nas colunas da tabela.
4. public class Actor implements Serializable { 5. private Short actorId; 6. private String firstName; 7. private String lastName; 8. private Date lastUpdate; }
9. Gere os getters e setters para os campos colocando o cursor de insero no editor de cdigo-fonte, digitando Alt-Insert e, em seguida, selecionando Getter e setter. 10. Na caixa de dilogo Gerar getters e setters, selecione todos os campos e clique em Gerar.
Na caixa de dilogo Gerar getters e setters, voc pode usar a seta para cima no teclado para mover o item selecionado para o n Ator e pressionar a barra de espaos para selecionar todos os campos em Ator.
11. Corrija as importaes e salve as alteraes.
Depois de criar o POJO para a tabela, voc desejar criar um arquivo de mapeamento do Hibernate para Actor.java.
1. Clique com o boto direito do mouse no n de pacotes de cdigo-fonte sakila.entity, na janela Projetos, e escolha Novo > Outro para abrir o assistente Novo arquivo. 2. Selecione o Arquivo de mapenamento do Hibernate na categoria Hibernate. Clique em Prximo. 3. Insira Actor.hbm como Nome do arquivo e verifique se a pasta src/sakila/entity. Clique em Prximo.
4. Insira sakila.entity.Actor para Classe a mapear e selecione actor na lista suspensa Tabela do banco de dados. Clique em Terminar.
Quando voc clicar em Terminar, o arquivo de mapeamento do Hibernate Actor.hbm.xml ser aberto no editor de cdigo-fonte. O IDE tambm adiciona automaticamente uma entrada para o recurso de mapeamento para hibernate.cfg.xml. Voc pode visualizar os detalhes da entrada ampliando o n Mapeamento, na visualizao Desenho do hibernate.cfg.xml ou na visualizao XML. A entrada mapping na visualizao XML ser semelhante a:
<mapping resource="sakila/entity/Actor.hbm.xml"/> </session-factory> </hibernate-configuration>
5. Associe os campos Actor.java s colunas na tabela ACTOR fazendo as seguintes alteraes (em negrito) no Actor.hbm.xml.
6. <hibernate-mapping> 7. <class name="sakila.entity.Actor" table="actor"> 8. <id name="actorId" type="java.lang.Short"> 9. <column name="actor_id"/> 10. <generator class="identity"/> 11. </id> 12. <property name="firstName" type="string"> 13. <column length="45" name="first_name" not-null="true"/> 14. </property> 15. <property name="lastName" type="string"> 16. <column length="45" name="last_name" not-null="true"/> 17. </property> 18. <property name="lastUpdate" type="timestamp"> 19. <column length="19" name="last_update" not-null="true"/> 20. </property> 21. </class> </hibernate-mapping>
Voc pode usar o recurso auto-completar cdigo no editor para completar os valores ao modificar o arquivo de mapeamento. Observao: Por padro, o elemento class gerado tem uma guia de fechamento. Como voc precisa adicionar elementos de propriedade entre as tags de abertura e fechamento do elemento class, necessrio fazer as alteraes a seguir (exibidas em negrito). Depois de fazer as alteraes, voc poder usar o recurso auto-completar cdigo entre as tags class.
<hibernate-mapping> <class name="sakila.entity.Actor" table="actor"> </class> </hibernate-mapping>
A criao de POJOs individuais e arquivos de mapeamento do Hibernate pode ser um modo conveniente de personalizar ainda mais seu aplicativo.