Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
NetBeans IDE NetBeans Platform Plugins Docs & Support Community Partners Search
O Hibernate é o framework que fornece ferramentas para o mapeamento relacional de objeto (ORM). O tutorial demonstra como adicionar Java Programming
Language
suporte para o framework do Hibernate ao IDE e criar os arquivos necessários do Hibernate. Depois de criar os objetos Java e configurar a
aplicação para utilizar o Hibernate, você cria um bean gerenciado pelo JSF e páginas do JSF 2.0 para exibir dados.
Antes de começar este tutorial, você pode se familiarizar com os seguintes documentos. Support
Documentação do Hibernate em hibernate.org
Oracle Development Tools
Introdução ao Desenvolvimento de Aplicações Web Support Offering for
NetBeans IDE
Introdução ao JavaServer Faces 2.0
Conteúdo Documentation
Criando o Banco de Dados General Java Development
External Tools and Services
Criando o Projeto de Aplicação Web
Java GUI Applications
Modificando o Arquivo de Configuração do Hibernate Java EE & Java Web
Development
Criando o Arquivo de Ajuda HibernateUtil.java
Web Services Applications
Gerando Arquivos de Mapeamento Hibernate e Classes Java NetBeans Platform (RCP)
and Module Development
Criando a Classe Helper FilmHelper.java
PHP and HTML5
Criando o Bean Gerenciado pelo JSF Applications
C/C++ Applications
Criando as Páginas Web
Mobile Applications
Executando o Projeto
Sample Applications
Fazendo Download do Projeto da Solução
Demos and Screencasts
Para criar o banco de dados sakila, você pode fazer o download e instalar o plug-in Banco de Dados de Amostra do Sakila usando o
Gerenciador de plug-ins. Depois que você instala o plug-in, 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 trabalhar com o MySQL, consulte o tutorial Estabelecendo Conexão com um
Banco de Dados MySQL.
2. Depois da instalação do plug-in, inicie o banco de dados MySQL expandindo o nó Bancos de Dados na janela Serviços, clicando com
o botão direito do mouse no nó Servidor MySQL e selecionando Iniciar.
3. Clique com o botão direito do mouse no nó Servidor MySQL e escolha Criar Banco de Dados.
4. Selecione o banco de dados Sakila na lista drop-down Novo Nome de Banco de Dados, na caixa de diálogo Criar Banco de Dados
MySQL. Clique em OK.
Quando você clicar em OK, um nó do Salkila será exibido sob o nó Servidor MySQL.
Quando você 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 Default]) será apresentado no nó Bancos de Dados. Quando uma conexão for aberta, você
poderá exibir os dados no banco de dados ampliando o nó de conexão.
1. Escolha Arquivo > Novo Projeto (Ctrl-Shift-N; ⌘-Shift-N no Mac) no menu principal. Selecione Aplicação Web na categoria Java
Web e clique em Próximo.
3. Desmarque a opção Usar Pasta Dedicada, se ela estiver selecionada. Clique em Próximo.
Neste tutorial, não é necessário copiar as bibliotecas do projeto para uma pasta dedicada, pois você não precisará compartilhar
bibliotecas com outros usuários.
4. Defina o servidor como GlassFish Server 3 e defina a Versão de Java EE como Java EE 6 Web. Clique em Próximo.
5. Marque a caixa de seleção JavaServer Faces e utilize as bibliotecas default do JSF 2.0.
7. Selecione o banco de dados sakila na lista drop-down Conexão de Banco de Dados. Clique em Finalizar.
Observação: se o banco de dados sakila não estiver disponível como uma opção no painel Framework do assistente, verifique se a
conexão está listada no nó Bancos de Dados da janela Serviços. Se a conexão não existir, será necessário criar a conexão do banco de
dados.
Quando você clicar em Finalizar, o IDE criará o projeto de aplicação Web e abrirá o arquivo hibernate.cfg.xml e index.xhtml no
editor.
Se expandir o nó Bibliotecas na janela Projetos, você poderá ver que o IDE adicionou as bibliotecas do Hibernate ao projeto.
Modificando o Arquivo de Configuração do Hibernate
Quando você cria um novo projeto que utiliza o framework do Hibernate, o IDE cria automaticamente o arquivo de configuração
hibernate.cfg.xml na raiz do classpath de contexto da aplicação (na janela Arquivos, src/java). O arquivo está localizado em
<pacotes default> no nó Pacotes de Código-Fonte na janela Projetos. O arquivo de configuração contém informações sobre a conexão
do banco de dados, os mapeamentos de recursos e outras propriedades da conexão. É possível editar o arquivo utilizando o editor de várias
views ou editar o XML diretamente no editor XML.
Neste exercício, você editará as propriedades default especificadas em hibernate.cfg.xml para ativar o log de depuração das
instruções SQL e para ativar o gerenciamento de contexto de sessão do Hibernate.
1. Abra hibernate.cfg.xml na guia Desenho. Você pode abrir o arquivo expandindo o nó <pacotes default> em Pacotes de
Códigos-Fonte na janela Projetos e clicando duas vezes em hibernate.cfg.xml.
2. No editor XML com várias views, expanda o nó Propriedades da Configuração em Propriedades Opcionais.
4. Na caixa de diálogo, selecione a propriedade hibernate.show_sql e defina o valor para true. Isso ativa o log de depuração das
instruções SQL.
Observação para o NetBeans IDE 6.9. Você deve digitar org.hibernate.hql.classic.ClassicQueryTranslatorFactory como o
Valor da Propriedade. No NetBeans IDE 6.9, o Valor da Propriedade na lista drop-down para a classe de fábrica está incorreto.
Se clicar na guia XML no editor, você pode ver o arquivo na view XML. O arquivo deve ter uma aparência semelhante à seguinte (as
três novas propriedades estão em negrito):
<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.current_session_context_class">thread</property>
<property
name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslator
Factory</property>
</session-factory>
</hibernate-configuration>
Você pode fechar o arquivo, pois não será necessário editá-lo novamente.
Nesta seção, você usa o assistente para Novo Arquivo a fim de criar a classe helper HibernateUtil.java.
1. Clique com o botão direito do mouse no nó dos Pacote de Códigos-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 Próximo.
3. Digite HibernateUtil para o nome da classe e dvdrental para o pacote. Clique em Finalizar.
Quando você clicar em Finalizar, o HibernateUtil.java será aberto no editor. Você pode fechar o arquivo porque não precisa editá-lo.
Você pode utilizar os Arquivos de Mapeamento do Hibernate e POJOs obtidos de um assistente de Banco de Dados para criar vários POJOs e
arquivos de mapeamento com base nas tabelas de banco de dados. Ao utilizar o assistente, selecione todas as tabelas para as quais deseja
POJOs e arquivos de mapeamento, e o IDE irá gerar os arquivos com base nas tabelas do banco de dados e adicionar as entradas de
mapeamento no hibernate.cfg.xml. Quando usa o assistente, você pode 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 use anotações EJB 3, por exemplo).
Observação. O IDE também possui assistentes para ajudá-lo a criar POJOs e arquivos de mapeamento individuais do zero.
O arquivo de engenharia reversa permite ter maior controle sobre a estratégia de mapeamento do banco de dados. O Assistente para
Engenharia Reversa do Hibernate cria um arquivo de engenharia reversa com uma configuração default que pode ser editada no editor
XML.
1. 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.
2. Selecione o Assistente para Engenharia Reversa do Hibernate na categoria Hibernate. Clique em Próximo.
3. Especifique hibernate.reveng como o Nome do arquivo e src/java para a Pasta. Clique em Próximo.
4. Selecione hibernate.cfg.xml na lista drop-down Arquivo de Configuração, caso não esteja selecionado.
5. Selecione as tabelas a seguir em Tabelas Disponíveis e clique em Adicionar para adicionar as tabelas a Tabelas Selecionadas.
ator
categoria
filme
film_actor
film_category
idioma
Clique em Finalizar.
O assistente gera um arquivo de engenharia reversa hibernate.reveng.xml e abre o arquivo no editor. Você pode fechar o arquivo
de engenharia reversa porque não precisará editar o arquivo.
Para obter mais detalhes sobre como trabalhar com o arquivo hibernate.reveng.xml, consulte o Capítulo 5. Controlando a
engenharia reversa no Guia de Referência das Ferramentas do Hibernate.
Para criar os POJOS e arquivos de mapeamento utilizando um assistente, execute as etapas a seguir:
1. 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.
2. Selecione Arquivos de Mapeamento do Hibernate e POJOs provenientes de um Banco de Dados na categoria Hibernate. Clique
em Próximo.
5. Certifique-se de que as opções Código do Domínio e Mapeamentos XML do Hibernate estejam selecionadas.
<hibernate-configuration>
<session-factory>
<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">myusername</property>
<property name="hibernate.connection.password">mypassword</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<property
name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslator
Factory</property>
<mapping resource="dvdrental/FilmActor.hbm.xml"/>
<mapping resource="dvdrental/Language.hbm.xml"/>
<mapping resource="dvdrental/Film.hbm.xml"/>
<mapping resource="dvdrental/Category.hbm.xml"/>
<mapping resource="dvdrental/Actor.hbm.xml"/>
<mapping resource="dvdrental/FilmCategory.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Observação. Confirme se os elementos mapping serão listados após os elementos property no arquivo
hibernate.cfg.xml.
É possível expandir o pacote dvdrental para ver os arquivos gerados pelo assistente.
Você pode utilizar o assistente para mapeamento do Hibernate se quiser criar um arquivo de mapeamento do Hibernate que mapeie
uma tabela específica para uma classe específica.
Para obter mais detalhes sobre como trabalhar com o arquivo hibernate.reveng.xml, consulte o Capítulo 5. Mapeamento
O/R Básico da Documentação de Referência do Hibernate.
Criando a Classe
Nesta seção, utilize o assistente de Novo Arquivo para criar a classe do helper FilmHelper.java no pacote dvdrental. Você criará
uma sessão do Hibernate, chamando getSessionFactory em HibernateUtil.java e criará alguns métodos do helper para
fazer consultas e recuperar dados do banco de dados. Você chamará os métodos do helper de páginas JSP.
1. Clique com o botão direito do mouse no nó do pacote de códigos-fonte dvdrental e selecione Novo > Classe Java para abrir o
assistente de Novo arquivo.
4. Adicionando o código a seguir (em negrito) para criar uma sessão do Hibernate.
public FilmHelper() {
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
}
5. Clique com o botão direito do mouse no editor, selecione Corrigir importações (Alt-Shift-I; ⌘-Shift-I no Mac) para adicionar as
instruções necessárias de importação (org.hibernate.Session) e salve suas alterações.
A tabela Film possui 1000 registros, de modo que o método para recuperar a lista de filmes deveria ser capaz de recuperar os registros
com base na chave primária filmId. Utilize o editor HQL para criar e testar a consulta HQL. Após criar a consulta correta, você
adicionará um método à classe que possa gerar a consulta apropriada.
1. Clique com o botão direito do mouse no nó do projeto na janela Projetos e selecione Limpar e Construir.
2. Clique com o botão direito do mouse em hibernate.cfg.xml na janela Projetos e selecione Executar Consulta HQL para abrir
o editor de consultas HQL.
from Film
Ao clicar em Executar a Consulta HQL, você verá os resultados da consulta na janela inferior do editor de consultas HQL.
5. Digite a consulta a seguir para recuperar os registros da tabela Film, onde o id do filme está entre 100 e 200.
A janela de resultados exibirá uma lista de registros. Agora que você verificou que a consulta testada retorna os resultados
desejados, utilize a consulta na classe do helper.
6. Adicione o método a seguir, getFilmTitles a FilmHelper.java, para recuperar os filmes, onde o id do filme está entre
uma determinada faixa especificada pelas variáveis startID e endID.
7. Adicione o método a seguir, getActorsByID, para recuperar os atores de um filme específico. O método construirá a consulta
utilizando filmId como a variável de entrada.
} catch (Exception e) {
e.printStackTrace();
}
return actorList;
}
1. Adicione o método a seguir para recuperar uma lista de categorias de acordo com filmId.
} catch (Exception e) {
e.printStackTrace();
}
return categoryList.get(0);
}
2. Adicione o método seguinte para recuperar um único filme de acordo com o filmId.
try {
org.hibernate.Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Film as film where film.filmId=" +
filmId);
film = (Film) q.uniqueResult();
} catch (Exception e) {
e.printStackTrace();
}
return film;
}
3. Adicione o método a seguir para recuperar o idioma do filme de acordo com o filmId.
try {
org.hibernate.Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Language as lang where lang.languageId="
+ langId);
language = (Language) q.uniqueResult();
} catch (Exception e) {
e.printStackTrace();
}
return language.getName();
}
4. Salve as alterações.
1. Clique com o botão direito do mouse no nó do pacote de código-fonte dvdrental e selecione Novo > Outro.
2. Selecione Bean Gerenciado pelo JSF na categoria JavaServer Faces. Clique em Próximo.
5. Digite filmController como o Nome que será utilizado para o bean gerenciado.
@ManagedBean
@SessionScoped
public class FilmController {
Observação. Observe que o nome do bean gerenciado não está especificado explicitamente. Por default, o nome do bean é o mesmo
que o nome da classe e inicia com letra minúscula. Se você quiser que o nome do bean seja diferente do nome da classe, você poderá
especificá-lo explicitamente como um parâmetro das anotações @ManagedBean (por exemplo,
@ManagedBean(name="myBeanName").
@ManagedBean
@SessionScoped
public class FilmController {
int startId;
int endId;
DataModel filmTitles;
FilmHelper helper;
private int recordCount = 1000;
private int pageSize = 10;
2. Adicione o código a seguir (em negrito) para criar a instância do FilmController e recuperar os filmes.
void recreateModel() {
filmTitles = null;
}
3. Adicione os métodos a seguir usados para exibir a tabela e navegar entre as páginas.
Os métodos que retornam "index" ou "browse" solicitarão o handler de navegação JSF para tentar abrir uma página denominada
index.xhtml ou browse.xhtml. A especificação JSF 2.0 permite a utilização de regras de navegação implícitas em aplicações
que utilizam a tecnologia Facelets. Nesta aplicação, não há regras de navegação configuradas em faces-config.xml. Em vez
disso, o handler de navegação tentará localizar a página adequada na aplicação.
4. Adicione os métodos a seguir que acessam a classe do helper para recuperar detalhes adicionais do filme.
Você pode utilizar a funcionalidade para autocompletar código no editor para ajudar a digitar seu código.
Para saber mais sobre a utilização do JSF 2.0 e modelos do Facelets, consulte Introdução ao JavaServer Faces 2.0
Criando template.xhtml
Primeiro, você criará o modelo de Facelets template.xhtml do JSF utilizado na composição das páginas index.xhtml e
browse.xhtml.
1. Clique com o botão direito do mouse no nó do projeto DVDStore na janela Projetos e selecione Novo > Outro.
3. Digite template para o Nome do Arquivo e selecione o primeiro estilo de layout CSS.
4. Clique em Finalizar.
Quando você clica em Finalizar, o arquivo template.xhtml é aberto no editor. O modelo contém o código default a seguir.
<h:body>
</h:body>
5. Modifique o elemento <ui:insert> para alterar o nome gerado default para "corpo".
6. Salve as alterações.
O conteúdo do elemento <ui:define name="body"> nos arquivos index.xhtml e browse.xhtml será inserido no local
identificado com <ui:insert name="body">Content</ui:insert> no modelo.
Modificando index.xhtml
Quando você criou a aplicação Web, o IDE gerou automaticamente a página index.xhtml. Neste exercício, você modifica a página
para exibir uma lista de títulos de filmes. A página JSF chama os métodos no FilmController do Bean Gerenciado pelo JSF para recuperar
a lista de filmes e exibir uma tabela com títulos e descrições dos filmes.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Hello from Facelets
</h:body>
</html>
2. Modifique a página para utilizar os elementos JSF <ui:composition> e <ui:define> e adicione um elemento <h:form>.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="./template.xhtml">
<ui:define name="body">
<h:form>
</h:form>
</ui:define>
</ui:composition>
</html>
Quando você começa a digitar as tags, o IDE adiciona a declaração da biblioteca de tags
xmlns:ui="http://java.sun.com/jsf/facelets".
Os elementos <ui:composition> e <ui:define> são utilizados em combinação com o modelo de página que você criará.
O elemento <ui:composition> faz referência à localização do modelo que será utilizado por essa página. O elemento
<ui:define> faz referência à posição no modelo que o código incluído ocupará.
3. Adicione os seguintes links de navegação que chamam os métodos previous e next no Bean gerenciado pelo JSF.
<ui:define name="body">
<h:form>
<h:commandLink action="#{filmController.previous}" value="Previous
#{filmController.pageSize}" rendered="#{filmController.hasPreviousPage}"/>
<h:commandLink action="#{filmController.next}" value="Next
#{filmController.pageSize}" rendered="#{filmController.hasNextPage}"/>
</h:form>
</ui:define>
4. Adicione o seguinte elemento dataTable (em negrito) para gerar a tabela para exibir os itens recuperados.
<h:form styleClass="jsfcrud_list_form">
<h:commandLink action="#{filmController.previous}" value="Previous
#{filmController.pageSize}" rendered="#{filmController.hasPreviousPage}"/>
<h:commandLink action="#{filmController.next}" value="Next
#{filmController.pageSize}" rendered="#{filmController.hasNextPage}"/>
<h:dataTable value="#{filmController.filmTitles}" var="item"
border="0" cellpadding="2" cellspacing="0"
rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
<h:column>
<f:facet name="header">
<h:outputText value="Title"/>
</f:facet>
<h:outputText value="#{item.title}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Description"/>
</f:facet>
<h:outputText value="#{item.description}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value=" "/>
</f:facet>
<h:commandLink action="#{filmController.prepareView}"
value="View"/>
</h:column>
</h:dataTable>
<br/>
</h:form>
5. Salve as alterações.
A página de índice agora exibirá uma lista de títulos de filmes no banco de dados. Cada linha da tabela inclui um link "Exibir" que chama o
método prepareView no bean gerenciado. O método prepareView retornará "browse" e abrirá o browse.xhtml.
Observação. Quando você digitar a tag <f:facet>, o IDE adicionará a declaração da biblioteca de tags
xmlns:f="http://java.sun.com/jsf/core. Confirme se a biblioteca de tags está declarada no arquivo.
Criando browse.xhtml
Agora você criará a página browse.xhtml para exibir os detalhes do filme selecionado. É possível utilizar o assistente Cliente de
Modelo de Facelets para criar a página com base no modelo de Facelets do JSF template.xhtml que você criou.
1. Clique com o botão direito do mouse no nó do projeto DVDStore na janela Projetos e selecione Novo > Outro.
4. Localize o Modelo da página clicando em Mais para abrir a caixa de diálogo Procurar Arquivos.
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./template.xhtml">
<ui:define name="top">
top
</ui:define>
<ui:define name="body">
body
</ui:define>
</ui:composition>
É possível ver que o novo arquivo especifica o arquivo template.xhtml e que a tag <ui:define> possui a propriedade
name="body"
7. Adicione o código a seguir (em negrito) entre as tags <ui:define> para criar o form e chamar os métodos no FilmController do
Bean gerenciado para recuperar os dados e preencher o form.
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./template.xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="top">
top
</ui:define>
<ui:define name="body">
<h:form>
<h:panelGrid columns="2">
<h:outputText value="Title:"/>
<h:outputText value="#{filmController.selected.title}"
title="Title"/>
<h:outputText value="Description"/>
<h:outputText value="#{filmController.selected.description}"
title="Description"/>
<h:outputText value="Genre"/>
<h:outputText value="#{filmController.category}"/>
<h:outputText value="Cast"/>
<h:outputText value="#{filmController.actors}"/>
<h:outputText value="Language"/>
<h:outputText value="#{filmController.language}" title="Film
Length"/>
</ui:define>
</ui:composition>
</html>
É possível ver que os arquivos browse.xhtml e index.xhtml utilizarão o mesmo modelo de página.
8. Salve as alterações.
Executando o Projeto
O conceito básico da aplicação agora está concluído. Agora você pode executar a aplicação para verificar se tudo está funcionando
corretamente.
1. Clique em Executar Projeto Principal na barra de ferramentas principal ou clique com o botão direito do mouse no nó da aplicação
DVDStore na janela Projetos e selecione Executar.
O IDE salva todos os arquivos alterados, constrói e implanta a aplicação no servidor. O IDE abre a janela do browser no URL
http://localhost:8080/DVDStore/ que exibe a lista de filmes.
2. No browser, clique em "Exibir" para carregar o browse.xhtml e exibir os detalhes do filme.
Faça o check-out do código-fonte do projeto das Amostras do NetBeans ao executar as etapas a seguir:
Escolha Equipe > Subversion > Efetuar check-out no menu principal.
Clique em Procurar para abrir a caixa de diálogo Procurar nas Pastas do Repositório:
Clique em Finalizar.
Quando você clica em Finalizar, o IDE inicializa a pasta local como um repositório Subversion e verifica os códigos-fonte do
projeto.
Clique em Abrir Projeto na caixa de diálogo exibida quando o check-out for concluído.
Observações. Para saber mais sobre a instalação do Subversion, consulte a seção Configurando o Subversion no Guia do
Subversion no NetBeans IDE.
Consulte Também
Suporte do JSF 2.0 no NetBeans IDE
By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by