<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, 2011, Oracle and/or its affiliates. All rights reserved.
--> 
<html>
<head>
   <title>Utilizando o Hibernate em uma Aplicação Web - Tutorial do NetBeans IDE</title>
   <!-- BEGIN METADATA -->
   <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
   <meta name="description" content="Demonstrates how to add support for Hibernate to the IDE and use Hibernate with JSF components in a Web application.">
   <meta name="KEYWORDS" content="NetBeans, Hibernate, JSF, Tutorial, Database">
   <link rel="stylesheet" href="../../../netbeans.css" type="text/css">
   <!-- END METADATA -->
   
</head>
<body>
   
    <a name="top"></a>
    <h1>Utilizando o Hibernate em uma Aplicação Web</h1>
<!-- Currently this tutorial does not work -- #243018 -->
    <p>Neste tutorial, você utiliza o NetBeans IDE para criar e implantar uma aplicação Web que exibe dados do banco de dados. A aplicação Web utiliza o framework do Hibernate como a camada de persistência para recuperar e armazenar objetos Java simples antigos (POJOs) em um banco de dados relacional.</p>
    
    <p>O Hibernate é o framework que fornece ferramentas para o mapeamento relacional de objeto (ORM). O tutorial demonstra como adicionar 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.</p>
    
    <p>Antes de começar este tutorial, você pode se familiarizar com os seguintes documentos.</p>
    <ul>
        <li>Documentação do Hibernate em <a href="http://www.hibernate.org/" target="_blank">hibernate.org</a></li>
        <li><a href="quickstart-webapps.html">Introdução ao Desenvolvimento de Aplicações Web</a></li>
        <li><a href="jsf20-intro.html">Introdução ao JavaServer Faces 2.x</a></li>
    </ul>

    <p><b>Conteúdo</b></p>
    <img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4" class="stamp" src="../../../images_www/articles/72/netbeans-stamp-74-73-72.png" title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4">
    <ul>
        <li><a href="#01">Criando o Banco de Dados</a></li>
        <li><a href="#02">Criando o Projeto de Aplicação Web</a></li>
        <li><a href="#03">Modificando o Arquivo de Configuração do Hibernate</a></li>
        <li><a href="#04">Criando o Arquivo de Ajuda <tt>HibernateUtil.java</tt> </a></li>
        <li><a href="#05">Gerando Arquivos de Mapeamento Hibernate e Classes Java</a></li>
        <li><a href="#06">Criando a Classe Helper <tt>FilmHelper.java</tt></a></li>
        <li><a href="#07">Criando o Bean Gerenciado pelo JSF</a>
        <li><a href="#08">Criando as Páginas Web</a></li>
        <li><a href="#09">Executando o Projeto</a></li>
        <li><a href="#10">Fazendo Download do Projeto da Solução</a></li>
        <li><a href="#11">Solução de Problemas</a></li>
    </ul>

   
   <p><b>Para seguir este tutorial, são necessários os recursos e o software a seguir.</b></p>

    <table>
        <tbody>
            <tr>
                <th class="tblheader" scope="col">Software ou Recurso</th>
                <th class="tblheader" scope="col">Versão Necessária</th>
            </tr> 
            <tr>
                <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
                <td class="tbltd1">Versões 7.1, 7.2, 7.3 e 7.4 do Java EE</td>
            </tr>
            <tr>
                <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK (Java Development Kit)</a></td>
                <td class="tbltd1">Versão 6 ou 7</td>
            </tr>
             <tr>
                <td class="tbltd1">GlassFish Server Open Source Edition</td>
                <td class="tbltd1">3.x ou 4.x</td>
            </tr>   
            <tr>
                <td class="tbltd1"><a href="http://www.mysql.com/">Servidor de banco de dados MySQL</a></td>
                <td class="tbltd1">Versão 5.x</td>
            </tr>
            <tr>
                <td class="tbltd1">Banco de Dados Sakila</td>
                <td class="tbltd1">Plug-in disponível na Central de Atualização</td>
            </tr>
        </tbody>
</table>


<p class="tips">Você pode fazer download <a href="https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/DVDStoreEE6.zip">de um arquivo compactado zip do projeto finalizado</a>.</p>

<a name="01"></a>
<h2>Criando o Banco de Dados</h2>
    <p>Este tutorial utiliza um banco de dados MySQL chamado <tt>sakila</tt>, uma amostra gratuita do banco de dados MySQL que está disponível no site do MySQL. O banco de dados sakila não está incluído quando você instala o IDE, portanto, você precisa primeiro criar o banco de dados para seguir este tutorial.</p>

    <p>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.</p>
    <p>Para obter mais informações sobre a configuração do IDE para trabalhar com o MySQL, consulte o tutorial <a href="../ide/mysql.html">Estabelecendo Conexão com um Banco de Dados MySQL</a>.</p>

    <ol>
        <li>Abra o Gerenciador de plug-ins e instale o plug-in Banco de Dados de Amostra do Sakila.</li>
        <li>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.</li>
        <li>Clique com o botão direito do mouse no nó Servidor MySQL e escolha Criar Banco de Dados.</li>
        <li>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.<br /> <img alt="Tela da caixa de diálogo Criar Banco de Dados MySQL" class="margin-around b-all" height="176" src="../../../images_www/articles/72/web/hibernate-webapp/create-sakila-mysql.png" title="Tela da caixa de diálogo Criar Banco de Dados MySQL" width="393">

        <p>Quando você clicar em OK, um nó do Salkila será exibido sob o nó Servidor MySQL.</p>
        <li>Clique com o botão direito do mouse no nó do Sakila e escolha Conectar.</li>
    </ol>
    <p>Quando você clicar em Conectar, um nó de conexão do banco de dados do banco de dados Sakila (<tt>jdbc:mysql://localhost:3306/sakila [<i>nome de usuário</i> em Default]</tt>) 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.</p>


    
<a name="02"></a>
<h2>Criando o Projeto de Aplicação Web</h2>
    <p>Neste exercício, você criará um projeto de aplicação Web e adicionará as bibliotecas do Hibernate ao projeto. Após criar o projeto, você selecionará Hibernate no painel Frameworks do assistente de Novo Projeto e especificará o banco de dados.</p>
    <ol>
        <li>Escolha Arquivo > Novo Projeto (Ctrl-Shift-N; &amp;#8984-Shift-N no Mac) no menu principal. Selecione Aplicação Web na categoria Java Web e clique em Próximo. </li>
        <li>Digite <strong>DVDStore</strong> para o nome do projeto e defina a localização do projeto.</li>
        <li>Desmarque a opção Usar Pasta Dedicada, se ela estiver selecionada. Clique em Próximo.
            <p>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.</p>
            </li>
        <li>Defina o servidor como GlassFish Server e defina a versão do Java EE para Java EE 6 Web ou Java EE 7 Web. Clique em Próximo.</li>
        <li>Marque a caixa de seleção JavaServer Faces e utilize as bibliotecas default do JSF 2.x.</li>
        <li>Marque a caixa de seleção Hibernar na lista de frameworks.</li>
        <li>Selecione o banco de dados sakila na lista drop-down Conexão de Banco de Dados. Clique em Finalizar.</li>
    </ol>
    <p class="notes"> <b>Observação:</b> 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.</p>
    <img alt="Painel Frameworks do assistente de Novo Projeto" class="margin-around b-all" src="../../../images_www/articles/74/web/hibernate-webapp/hib-newwebapp.png" title="Painel Frameworks do assistente de Novo Projeto mostrando como adicionar o suporte do Hibernar ao projeto">

    
    <p>Quando você clicar em Finalizar, o IDE criará o projeto de aplicação Web e abrirá o arquivo <tt>hibernate.cfg.xml</tt> e <tt>index.xhtml</tt> no editor.</p>
    <p>Se expandir o nó Bibliotecas na janela Projetos, você poderá ver que o IDE adicionou as bibliotecas do Hibernate ao projeto.</p>
    <img alt="Tela da janela Projetos mostrando bibliotecas do Hibernate" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hib-libraries.png" title="Tela da janela Projetos mostrando bibliotecas do Hibernate"> <a name="03"></a>
<h2>Modificando o Arquivo de Configuração do Hibernate</h2>
    <p>Quando você cria um novo projeto que utiliza o framework do Hibernate, o IDE cria automaticamente o arquivo de configuração <tt>hibernate.cfg.xml</tt> na raiz do classpath de contexto da aplicação (na janela Arquivos, <tt>src/java</tt>). O arquivo está localizado em <tt>&lt;pacotes default></tt> 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.</p>

    <p>Neste exercício, você editará as propriedades default especificadas em <tt>hibernate.cfg.xml</tt> para ativar o log de depuração das instruções SQL e para ativar o gerenciamento de contexto de sessão do Hibernate.</p>
    <ol>
        <li>Abra <tt>hibernate.cfg.xml</tt> na guia Desenho. Você pode abrir o arquivo expandindo o nó <tt>&lt;pacotes default></tt> em Pacotes de Códigos-Fonte na janela Projetos e clicando duas vezes em <tt>hibernate.cfg.xml</tt>.</li>
        <li>No editor XML com várias views, expanda o nó Propriedades da Configuração em Propriedades Opcionais.</li>
        <li>Clique em Adicionar para abrir a caixa de diálogo Adicionar Propriedade do Hibernate.</li>
        <li>Na caixa de diálogo, selecione a propriedade <tt>hibernate.show_sql</tt> e defina o valor para <tt>true</tt>. Isso ativa o log de depuração das instruções SQL.<br /> <img alt="Caixa de diálogo Adicionar Propriedade Hibernate na propriedade hibernate.show_sql" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/add-property-showsql.png" title="Caixa de diálogo Adicionar Propriedade Hibernate que mostra o valor de definição de hibernate.show_sql">
        </li>
        <li>Expanda o nó Propriedades Diversas e clique em Adicionar.</li>
        <li>Na caixa de diálogo, selecione <tt>properties hibernate.current_session_context_class</tt> e defina o valor para <tt>thread</tt> para ativar o gerenciamento de contexto automático da sessão do Hibernate.<br /> <img alt="Adicione a caixa de diálogo Propriedade do Hibernate às propriedades hibernate.current_session_context_class" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/add-property-sessioncontext.png" title="Adicione a caixa e diálogo Propriedade do Hibernate mostrando como definir o valor da propriedade hibernate.current_session_context_class"></li>
        <li>Clique novamente em Adicionar no nó Propriedades Diversas e selecione <tt>hibernate.query.factory_class</tt> na lista drop-down Nome da Propriedade.</li>
        <li>Selecione <strong>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</strong> como o Valor da Propriedade. Clique em OK.<br /> <img alt="Caixa de diálogo Adicionar Propriedade Hibernar das propriedades hibernate.query.factory_class" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/add-property-factoryclass.png" title="Caixa de diálogo Adicionar Propriedade Hibernate que mostra o valor de definição de hibernate.query.factory_class">
        <p>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):</p>
        <pre class="examplecode">&lt;hibernate-configuration&gt;
    &lt;session-factory name="session1"&gt;
        &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
        &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
        &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/sakila&lt;/property&gt;
        &lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;
        &lt;property name="hibernate.connection.password"&gt;######&lt;/property&gt;
        <strong>&lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
        &lt;property name="hibernate.current_session_context_class"&gt;thread&lt;/property&gt;
        &lt;property name="hibernate.query.factory_class"&gt;org.hibernate.hql.classic.ClassicQueryTranslatorFactory&lt;/property&gt;</strong>
    &lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;</pre>
        </li>
        <li>Salve as alterações feitas no arquivo.</li>
    </ol>
    <p>Você pode fechar o arquivo, pois não será necessário editá-lo novamente.</p>



<a name="04"></a>
<h2>Criando o Arquivo de Ajuda <tt>HibernateUtil.java</tt></h2>
<p>Para usar o Hibernate, é necessário criar uma classe de ajuda que lide com a inicialização e que acesse o <tt>SessionFactory</tt> do Hibernate para obter um objeto de Sessão. A classe chama <tt>configure()</tt>, carrega o arquivo de configuração <tt>hibernate.cfg.xml</tt> e cria <tt>SessionFactory</tt> para obter o objeto Sessão.
</p>

<p>Nesta seção, você usa o assistente para Novo Arquivo a fim de criar a classe helper <tt>HibernateUtil.java</tt>.</p>
<ol>
    <li>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.</li>
    <li>Selecione Hibernate na lista Categorias e HibernateUtil.java na lista Tipos de Arquivo. Clique em Próximo.</li>
    <li>Digite <strong>HibernateUtil</strong> para o nome da classe e <strong>dvdrental</strong> para o pacote. Clique em Finalizar.</li>

</ol>
<img alt="Tela do assistente do HibernateUtil" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hibernate-util-wizard.png" title="Tela do assistente do HibernateUtil" width="600">
<p>Quando você clicar em Finalizar, o <tt>HibernateUtil.java</tt> será aberto no editor. Você pode fechar o arquivo porque não precisa editá-lo.</p>


<a name="05"></a>
<h2>Gerando Arquivos de Mapeamento Hibernate e Classes Java</h2>

<p>Neste tutorial, você utilizará um POJO (objetos Java simples antigos) para representar os dados em cada uma das tabelas do banco de dados a ser utilizado. A classe Java especifica os campos das colunas nas tabelas e utiliza setters e getters simples para recuperar e gravar os dados. Para mapear os POJOs para as tabelas, utilize um arquivo de mapeamento do Hibernate ou utilize anotações na classe.</p>

<p>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 <tt>hibernate.cfg.xml</tt>. 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).</p>

<p class="notes"><strong>Observação.</strong> O IDE também possui assistentes para ajudá-lo a criar POJOs e arquivos de mapeamento individuais do zero.</p>

<div class="indent">
<a name="05a"></a>
<h3>Criando o Arquivo de Engenharia Reversa do Hibernate</h3>
<p>Se quiser utilizar os arquivos de Mapeamento do Hibernate e POJOs de um assistente de Banco de Dados, primeiro é necessário criar um arquivo de engenharia reversa <tt>hibernate.reveng.xml</tt>. Os Arquivos de Mapeamento do Hibernate e POJOs de um assistente de Banco de Dados requerem os arquivos <tt>hibernate.reveng.xml</tt> e <tt>hibernate.cfg.xml</tt>.</p>
<p>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.</p>
<p>Para criar o arquivo de engenharia reversa do Hibernate, execute as etapas seguintes.</p>

<ol>
    <li>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.</li>
    <li>Selecione o Assistente para Engenharia Reversa do Hibernate na categoria Hibernate. Clique em Próximo.</li>
    <li>Especifique <tt>hibernate.reveng</tt> como o Nome do arquivo e <tt>src/java</tt> para a Pasta. Clique em Próximo.</li>
    <li>Selecione <tt>hibernate.cfg.xml</tt> na lista drop-down Arquivo de Configuração, caso não esteja selecionado.</li>
    <li>Selecione as tabelas a seguir em Tabelas Disponíveis e clique em Adicionar para adicionar as tabelas a Tabelas Selecionadas.
    <ul>
        <li>ator</li>
        <li>categoria</li>
        <li>filme</li>
        <li>film_actor</li>
        <li>film_category</li>
        <li>idioma</li>
    </ul>
    <p>Clique em Finalizar.</p>
    <img alt="Novo assistente de Engenharia Reversa do Hibernate" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hibernate-reveng-wizard.png" title="Novo assistente de Engenharia Reversa do Hibernate" width="600">
    </li>
</ol>
<p>O assistente gera um arquivo de engenharia reversa <tt>hibernate.reveng.xml</tt> e abre o arquivo no editor. Você pode fechar o arquivo de engenharia reversa porque não precisará editar o arquivo.</p>

<p class="tips">Para obter mais detalhes sobre como trabalhar com o arquivo <tt>hibernate.reveng.xml</tt>, consulte o <a href="http://docs.jboss.org/tools/2.1.0.Beta1/hibernatetools/html/reverseengineering.html" target="_blank">Capítulo 5. Controlando a engenharia reversa</a> no <a href="http://docs.jboss.org/tools/2.1.0.Beta1/hibernatetools/html/" target="_blank">Guia de Referência das Ferramentas do Hibernate</a>.</p>

<h3>Criando arquivos de mapeamento do Hibernate e POJOs</h3>
<p>Você pode utilizar os Arquivos de Mapeamento do Hibernate e POJOs obtidos de um assistente de Banco de Dados para gerar arquivos. O assistente pode gerar um POJO e um arquivo de mapeamento correspondente para cada tabela que você selecionar no assistente. Os arquivos de mapeamento são arquivos XML que contêm dados sobre como as colunas das tabelas são mapeadas para os campos nos POJOs. É necessário ter os arquivos <tt>hibernate.reveng.xml</tt> e <tt>hibernate.cfg.xml</tt> para utilizar o assistente.</p>

<p>Para criar os POJOS e arquivos de mapeamento utilizando um assistente, execute as etapas a seguir:</p>
<ol>
    <li>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.</li>
    <li>Selecione Arquivos de Mapeamento do Hibernate e POJOs provenientes de um Banco de Dados na categoria Hibernate. Clique em Próximo.</li>
    <li>Certifique-se de que os arquivos <tt>hibernate.cfg.xml</tt> e <tt>hibernate.reveng.xml</tt> estejam selecionados nas listas drop-down.</li>
    <li>Selecione <strong>Funcionalidades da Linguagem JDK 5</strong> nas opções Definições Gerais.</li>
    <li>Certifique-se de que as opções <strong>Código do Domínio</strong> e <strong>Mapeamentos XML do Hibernate</strong> estejam selecionadas.</li>
    <li>Selecione <strong>dvdrental</strong> para o Nome do pacote. Clique em Finalizar.<br /> <img alt="Gerar assistente Arquivos de Mapeamento Hibernar e POJOs" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hibernate-pojo-wizard2.png" title="Gerar assistente Arquivos de Mapeamento Hibernar e POJOs" width="600">
    </li>
</ol>
<p>Quando você clicar em Finalizar, o IDE irá gera POJOs e arquivos de mapeamento do Hibernate com os campos mapeados para as colunas especificadas em <tt>hibernate.reveng.xml</tt>. O IDE também adicionará entradas de mapeamento em <tt>hibernate.cfg.xml</tt>.</p>

<pre class="examplecode">&lt;hibernate-configuration&gt;
  &lt;session-factory&gt;
    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
    &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
    &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/sakila&lt;/property&gt;
    &lt;property name="hibernate.connection.username"&gt;myusername&lt;/property&gt;
    &lt;property name="hibernate.connection.password"&gt;mypassword&lt;/property&gt;
    &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
    &lt;property name="hibernate.current_session_context_class"&gt;thread&lt;/property&gt;
    &lt;property name="hibernate.query.factory_class"&gt;org.hibernate.hql.classic.ClassicQueryTranslatorFactory&lt;/property&gt;
    &lt;mapping resource="dvdrental/FilmActor.hbm.xml"/&gt;
    &lt;mapping resource="dvdrental/Language.hbm.xml"/&gt;
    &lt;mapping resource="dvdrental/Film.hbm.xml"/&gt;
    &lt;mapping resource="dvdrental/Category.hbm.xml"/&gt;
    &lt;mapping resource="dvdrental/Actor.hbm.xml"/&gt;
    &lt;mapping resource="dvdrental/FilmCategory.hbm.xml"/&gt;
  &lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;</pre>

<p class="notes"><strong>Observação.</strong> Confirme se os elementos <tt>mapping</tt> serão listados após os elementos <tt>property</tt> no arquivo <tt>hibernate.cfg.xml</tt>.</p>

<p>É possível expandir o pacote <tt>dvdrental</tt> para ver os arquivos gerados pelo assistente.</p>

<img alt="Tela da janela Projetos mostrando os POJOs gerados" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hib-projectswindow.png" title="Janela Projetos mostrando os POJOs gerados">

<p class="tips">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.</p>

<p class="tips">Para obter mais detalhes sobre como trabalhar com o arquivo <tt>hibernate.reveng.xml</tt>, consulte o <a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html" target="_blank">Capítulo 5. Mapeamento O/R Básico</a> da <a href="http://docs.jboss.org/hibernate/stable/core/reference/en/html/" target="_blank">Documentação de Referência do Hibernate</a>.</p>


</div>

<a name="06"></a>
<h2>Criando a Classe do Helper <tt>FilmHelper.java</tt></h2>

<p>Agora você criará uma classe do helper no pacote <tt>dvdrental</tt> que será utilizada para efetuar consultas do Hibernate no banco de dados. Você utilizará o editor HQL (Hibernate Query Language) para criar e testar as consultas para recuperar dados. Depois de testar as consultas, você criará criados métodos na classe do helper que criarão e executarão as consultas. Em seguida, você chamará os métodos na classe do helper de um bean gerenciado pelo JSF.</p>

<a name="06a"></a>
<div class="indent">
    <h3>Criando a Classe</h3>
    <p>Nesta seção, utilize o assistente de Novo Arquivo para criar a classe do helper <tt>FilmHelper.java</tt> no pacote <tt>dvdrental</tt>. Você criará uma sessão do Hibernate, chamando <tt>getSessionFactory</tt> em <tt>HibernateUtil.java</tt> 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.</p>
    <ol>
        <li>Clique com o botão direito do mouse no nó do pacote de códigos-fonte <tt>dvdrental</tt> e selecione Novo > Classe Java para abrir o assistente de Novo arquivo.</li>
        <li>Digite <strong>FilmHelper</strong> como nome da classe. </li>
        <li>Confirme se <strong>dvdrental</strong> está selecionado como o Pacote. Clique em Finalizar.</li>
        <li>Adicionando o código a seguir (em negrito) para criar uma sessão do Hibernate.
        <pre class="examplecode">public class FilmHelper {

    <strong>Session session = null;

    public FilmHelper() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }</strong>

}</pre>
        </li>
        <li>Clique com o botão direito do mouse no editor, selecione Corrigir importações (Alt-Shift-I; &amp;#8984-Shift-I no Mac) para adicionar as instruções necessárias de importação (<tt>org.hibernate.Session</tt>) e salve suas alterações.</li>
    </ol>

    <p>Agora você modificará <tt>FilmHelper.java</tt> para adicionar métodos de consulta do BD.</p>

<a name="06b"></a>
    <h3>Enumerando Títulos de Filmes e Recuperando Atores Utilizando uma Consulta HQL</h3>
    <p>Neste exercício, você criará uma consulta HQL (Hibernate Query Language) que consulta o banco de dados para recuperar uma lista de títulos de filmes da tabela Film. Em seguida, você adicionará um método que consulte as tabelas Actor e Film_actor para extrair os atores que atuam em um filme específico.</p>

    <p>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 <tt>filmId</tt>. 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.
    </p>
    <ol>
        <li>Clique com o botão direito do mouse no nó do projeto na janela Projetos e selecione Limpar e Construir.</li>
        <li>Clique com o botão direito do mouse em <tt>hibernate.cfg.xml</tt> na janela Projetos e selecione Executar Consulta HQL para abrir o editor de consultas HQL.</li>
        <li>Selecione hibernate.cfg na lista drop-down da barra de ferramentas.</li>
        <li>Teste a conexão digitando no editor e clicando no botão Executar a Consulta HQL (&nbsp;<img alt="Botão Executar Consulta HQL" height="16" src="../../../images_www/articles/72/web/hibernate-webapp/run_hql_query_16.png" title="Botão Executar Consulta HQL" width="16" />&nbsp;) da barra de ferramentas.
        <pre class="examplecode">from Film</pre>
        <p>Ao clicar em Executar a Consulta HQL, você verá os resultados da consulta na janela inferior do editor de consultas HQL.</p>
        <img alt="Gerar assistente Arquivos de Mapeamento Hibernar e POJOs" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hibernate-hqleditor1.png" title="Gerar assistente Arquivos de Mapeamento Hibernar e POJOs">
        <p>Se você clicar no botão SQL, você verá a consulta SQL equivalente.</p>
        <pre class="examplecode">select film0_.film_id as col_0_0_ from sakila.film film0_</pre>
        </li>
        <li>Digite a consulta a seguir para recuperar os registros da tabela Film, onde o id do filme está entre 100 e 200.
        <pre class="examplecode">from Film as film where film.filmId between 100 and 200</pre>
        <p>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.</p>
        </li>
        <li>Adicione o método a seguir, <tt>getFilmTitles</tt> a <tt>FilmHelper.java</tt>, para recuperar os filmes, onde o id do filme está entre uma determinada faixa especificada pelas variáveis <tt>startID</tt> e <tt>endID</tt>.
        <pre class="examplecode">public List getFilmTitles(int startID, int endID) {
    List&lt;Film&gt; filmList = null;
    try {
        org.hibernate.Transaction tx = session.beginTransaction();
        Query q = session.createQuery ("from Film as film where film.filmId between '"+startID+"' and '"+endID+"'");
        filmList = (List&lt;Film&gt;) q.list();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return filmList;
}</pre>
        </li>
        <li>Adicione o método a seguir, <tt>getActorsByID</tt>, para recuperar os atores de um filme específico. O método construirá a consulta utilizando <tt>filmId</tt> como a variável de entrada.
        <pre class="examplecode">public List getActorsByID(int filmId){
    List&lt;Actor&gt; actorList = null;
    try {
        org.hibernate.Transaction tx = session.beginTransaction();
        Query q = session.createQuery ("from Actor as actor where actor.actorId in (select filmActor.actor.actorId from FilmActor as filmActor where filmActor.film.filmId='" + filmId + "')");
        actorList = (List&lt;Actor&gt;) q.list();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return actorList;
}</pre>
        </li>

        <li>Corrija as importações e salve as alterações.
        <p>Ao corrigir suas importações, selecione <tt>java.util.List</tt> e <tt>org.hibernate.Query</tt>.</p>
        </li>
    </ol>

<a name="06d"></a>
    <h3>Adicionando Métodos Adicionais do Helper</h3>
    <p>Agora você adicionará métodos adicionais do assistente que criem consultas com base em uma variável de entrada. É possível verificar as consultas no editor de consultas HQL.</p>



    <ol>
        <li>Adicione o método a seguir para recuperar uma lista de categorias de acordo com <tt>filmId</tt>.
<pre class="examplecode">public Category getCategoryByID(int filmId){
    List&lt;Category&gt; categoryList = null;
    try {
        org.hibernate.Transaction tx = session.beginTransaction();
        Query q = session.createQuery("from Category as category where category.categoryId in (select filmCat.category.categoryId from FilmCategory as filmCat where filmCat.film.filmId='" + filmId + "')");
        categoryList = (List&lt;Category&gt;) q.list();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return categoryList.get(0);
}</pre>
        </li>
        <li>Adicione o método seguinte para recuperar um único filme de acordo com o <tt>filmId</tt>.
        <pre class="examplecode">public Film getFilmByID(int filmId){

    Film film = null;

    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;
}</pre>
        </li>
        <li>Adicione o método a seguir para recuperar o idioma do filme de acordo com o <tt>filmId</tt>.
        <pre class="examplecode">public String getLangByID(int langId){

    Language language = null;

    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();
}</pre>
        </li>
        <li>Salve as alterações.</li>
    </ol>
</div>



        <a name="07"></a>
        <h2>Criando o Bean Gerenciado pelo JSF</h2>
        <p>Neste exercício, você criará um bean gerenciado pelo JSF. Os métodos do bean gerenciado são utilizados para exibir dados nas páginas JSF e para acessar métodos da classe do helper para recuperar registros. A especificação do JSF 2.0 permite utilizar anotações em uma classe bean para identificar a classe como um bean gerenciado pelo JSF, especificar o escopo e um nome para o bean.</p>

        <p>Para criar o bean gerenciado, execute as seguintes etapas:</p>
        <ol>
            <li>Clique com o botão direito do mouse no nó do pacote de código-fonte <tt>dvdrental</tt> e selecione Novo > Outro.</li>
           <li>Selecione Bean Gerenciado pelo JSF na categoria JavaServer Faces. Clique em Próximo.</li>
           <li>Digite <strong>FilmController</strong> para Nome da Classe.
                <p>Você usará o nome <tt>filmController</tt> do Bean Gerenciado como o valor para <tt>inputText</tt> e <tt>commandButton</tt> na página JSF <tt>index.xhtml</tt> ao chamar métodos no Bean.</p>
           </li>
           <li>Selecione <strong>dvdrental</strong> para o Pacote.</li>
           <li>Digite <strong>filmController</strong> como o Nome que será utilizado para o bean gerenciado.</li>
           <li>Defina o Escopo Como Sessão. Clique em Finalizar.</li>
        </ol>
        <img alt="Novo assistente de Bean Gerenciado pelo JSF" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hib-newmanagedbean.png" title="Novo assistente de Bean Gerenciado pelo JSF">

        <p>Quando você clicar em Finalizar, o IDE gerará a classe bean e abrirá a classe no editor. O IDE adicionou as anotações <tt>@ManagedBean</tt> e <tt>@SessionScoped</tt>.</p>
<pre class="examplecode">
@ManagedBean
@SessionScoped
public class FilmController {

    /** Creates a new instance of FilmController */
    public FilmController() {
    }

}
</pre>

        <p class="notes"><strong>Observação.</strong> 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 <tt>@ManagedBean</tt> (por exemplo, <tt>@ManagedBean(name="myBeanName")</tt>.</p>
        
        <ol>
            <li>Adicione os campos a seguir (em negrito) à classe.
                <pre class="examplecode">
@ManagedBean
@SessionScoped
public class FilmController {
    <strong>int startId;
    int endId;
    DataModel filmTitles;
    FilmHelper helper;
    private int recordCount = 1000;
    private int pageSize = 10;

    private Film current;
    private int selectedItemIndex;</strong>
}</pre>
            </li>
            <li>Adicione o código a seguir (em negrito) para criar a instância do FilmController e recuperar os filmes.
                <pre class="examplecode">
    /** Creates a new instance of FilmController */
    public FilmController() {
        <strong>helper = new FilmHelper();
        startId = 1;
        endId = 10;
    }

    public FilmController(int startId, int endId) {
        helper = new FilmHelper();
        this.startId = startId;
        this.endId = endId;
    }

    public Film getSelected() {
        if (current == null) {
            current = new Film();
            selectedItemIndex = -1;
        }
        return current;
    }


    public DataModel getFilmTitles() {
        if (filmTitles == null) {
            filmTitles = new ListDataModel(helper.getFilmTitles(startId, endId));
        }
        return filmTitles;
    }

    void recreateModel() {
        filmTitles = null;
    }</strong></pre>
        </li>
        <li>Adicione os métodos a seguir usados para exibir a tabela e navegar entre as páginas.

<pre class="examplecode"><strong>    public boolean isHasNextPage() {
        if (endId + pageSize <= recordCount) {
            return true;
        }
        return false;
    }

    public boolean isHasPreviousPage() {
        if (startId-pageSize > 0) {
            return true;
        }
        return false;
    }

    public String next() {
        startId = endId+1;
        endId = endId + pageSize;
        recreateModel();
        return "index";
    }

    public String previous() {
        startId = startId - pageSize;
        endId = endId - pageSize;
        recreateModel();
        return "index";
    }

    public int getPageSize() {
        return pageSize;
    }

    public String prepareView(){
        current = (Film) getFilmTitles().getRowData();
        return "browse";
    }
    public String prepareList(){
        recreateModel();
        return "index";
    }
</strong></pre>
        <p>Os métodos que retornam "index" ou "browse" solicitarão o handler de navegação JSF para tentar abrir uma página denominada <tt>index.xhtml</tt> ou <tt>browse.xhtml</tt>. 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 <tt>faces-config.xml</tt>. Em vez disso, o handler de navegação tentará localizar a página adequada na aplicação.</p>
    </li>
    <li>Adicione os métodos a seguir que acessam a classe do helper para recuperar detalhes adicionais do filme.
<pre class="examplecode"><strong>    public String getLanguage() {
        int langID = current.getLanguageByLanguageId().getLanguageId().intValue();
        String language = helper.getLangByID(langID);
        return language;
    }

    public String getActors() {
        List actors = helper.getActorsByID(current.getFilmId());
        StringBuffer totalCast = new StringBuffer();
        for (int i = 0; i < actors.size(); i++) {
            Actor actor = (Actor) actors.get(i);
            totalCast.append(actor.getFirstName());
            totalCast.append(" ");
            totalCast.append(actor.getLastName());
            totalCast.append("  ");
        }
        return totalCast.toString();
    }

    public String getCategory() {
        Category category = helper.getCategoryByID(current.getFilmId());
        return  category.getName();
    }</strong>
</pre>
            </li>
            <li>Corrija as importações (Ctrl-Shift-I) e salve as alterações.</li>
        </ol>
        <p class="tips">Você pode utilizar a funcionalidade para autocompletar código no editor para ajudar a digitar seu código.</p>


<!-- **************** Creating the Web Pages **************** -->

<a name="08"></a>
<h2>Criando as Páginas Web</h2>
<p>Neste exercício, você criará duas páginas Web para exibir os dados. Você modificará o <tt>index.xhtml</tt> gerado pelo IDE para adicionar uma tabela que exiba os filmes do banco de dados. Em seguida, você criará <tt>browse.xhtml</tt> para exibir os detalhes de um filme ao clicar no link "Exibir" da tabela. Você criará também uma página modelo do JSF que será utilizada por <tt>index.xhtml</tt> e <tt>browse.xhtml</tt>.</p>

<p class="tips">Para saber mais sobre a utilização do JSF 2.0 e modelos do Facelets, consulte <a href="jsf20-intro.html">Introdução ao JavaServer Faces 2.0</a></p>

<div class="indent">
    <a name="07a"></a>
    <h3>Criando <tt>template.xhtml</tt></h3>
    <p>Primeiro, você criará o modelo de Facelets <tt>template.xhtml</tt> do JSF utilizado na composição das páginas <tt>index.xhtml</tt> e <tt>browse.xhtml</tt>.</p>
    <ol>
        <li>Clique com o botão direito do mouse no nó do projeto DVDStore na janela Projetos e selecione Novo > Outro.</li>
        <li>Selecione Modelo de Facelets na categoria JavaServer Faces. Clique em Próximo.</li>
        <li>Digite <strong>template</strong> para o Nome do Arquivo e selecione o primeiro estilo de layout CSS.</li>
        <li>Clique em Finalizar.
        <p>Quando você clica em Finalizar, o arquivo <tt>template.xhtml</tt> é aberto no editor. O modelo contém o código default a seguir.</p>
            <pre class="examplecode">&lt;h:body&gt;

    &lt;div id="top" class="top"&gt;
        &lt;ui:insert name="top"&gt;Top&lt;/ui:insert&gt;
    &lt;/div&gt;

    &lt;div id="content" class="center_content"&gt;
        &lt;ui:insert name="content"&gt;Content&lt;/ui:insert&gt;
    &lt;/div&gt;

&lt;/h:body&gt;</pre></li>
    <li>Modifique o elemento <tt>&lt;ui:insert></tt> para alterar o nome gerado default para "corpo".
<pre class="examplecode">&lt;div id="content" class="center_content"&gt;
        &lt;ui:insert name="<strong>body</strong>"&gt;Content&lt;/ui:insert&gt;
&lt;/div&gt;</pre>
    </li>
    <li>Salve as alterações.</li>
    </ol>

    <p>O conteúdo do elemento <tt>&lt;ui:define name="body"></tt> nos arquivos <tt>index.xhtml</tt> e <tt>browse.xhtml</tt> será inserido no local identificado com <tt> &lt;ui:insert name="body">Content&lt;/ui:insert></tt> no modelo.</p>




    <h3>Modificando <tt>index.xhtml</tt></h3>
    <p>Quando você criou a aplicação Web, o IDE gerou automaticamente a página <tt>index.xhtml</tt>. 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.</p>
    <ol>
        <li>Expanda a pasta Páginas Web na janela Projetos e abra <tt>index.xhtml</tt> no editor.
        <p>O assistente para Novo Projeto gerou a seguinte página <tt>index.xhtml</tt> default.</p>
<pre class="examplecode">&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"&gt;
&lt;h:head&gt;
        &lt;title&gt;Facelet Title&lt;/title&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        Hello from Facelets
    &lt;/h:body&gt;
&lt;/html&gt;</pre></li>

<li>Modifique a página para utilizar os elementos JSF <tt>&lt;ui:composition></tt> e <tt>&lt;ui:define></tt> e adicione um elemento <tt>&lt;h:form></tt>.
    <pre class="examplecode">&lt;html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  <strong>xmlns:ui="http://java.sun.com/jsf/facelets"&gt;
    &lt;ui:composition template="./template.xhtml"&gt;
        &lt;ui:define name="body"&gt;
            &lt;h:form&gt;

            &lt;/h:form&gt;
        &lt;/ui:define&gt;
    &lt;/ui:composition&gt;</strong>
&lt;/html&gt;</pre>
    <p>Quando você começa a digitar as tags, o IDE adiciona a declaração da biblioteca de tags <tt>xmlns:ui="http://java.sun.com/jsf/facelets"</tt>.</p>
    <p>Os elementos <tt>&lt;ui:composition></tt> e <tt>&lt;ui:define></tt> são utilizados em combinação com o modelo de página que você criará. O elemento <tt>&lt;ui:composition></tt> faz referência à localização do modelo que será utilizado por essa página. O elemento <tt>&lt;ui:define></tt> faz referência à posição no modelo que o código incluído ocupará.</p>
</li>
<li>Adicione os seguintes links de navegação que chamam os métodos  <tt>previous</tt> e <tt>next</tt> no Bean gerenciado pelo JSF.
    <pre class="examplecode">
    &lt;ui:define name="body"&gt;
            &lt;h:form&gt;
                <strong>&lt;h:commandLink action="#{filmController.previous}" value="Previous #{filmController.pageSize}" rendered="#{filmController.hasPreviousPage}"/&gt;&nbsp;
                &lt;h:commandLink action="#{filmController.next}" value="Next #{filmController.pageSize}" rendered="#{filmController.hasNextPage}"/&gt;&nbsp;</strong>
            &lt;/h:form&gt;
    &lt;/ui:define&gt;</pre>
</li>

<li>Adicione o seguinte elemento <tt>dataTable</tt> (em negrito) para gerar a tabela para exibir os itens recuperados.
<pre class="examplecode">
            &lt;h:form styleClass="jsfcrud_list_form"&gt;
                &lt;h:commandLink action="#{filmController.previous}" value="Previous #{filmController.pageSize}" rendered="#{filmController.hasPreviousPage}"/&gt;&nbsp;
                &lt;h:commandLink action="#{filmController.next}" value="Next #{filmController.pageSize}" rendered="#{filmController.hasNextPage}"/&gt;&nbsp;
                <strong>&lt;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"&gt;
                    &lt;h:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Title"/&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.title}"/&gt;
                    &lt;/h:column&gt;
                    &lt;h:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Description"/&gt;
                        &lt;/f:facet&gt;
                        &lt;h:outputText value="#{item.description}"/&gt;
                    &lt;/h:column&gt;
                    &lt;h:column&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="&nbsp;"/&gt;
                        &lt;/f:facet&gt;
                        &lt;h:commandLink action="#{filmController.prepareView}" value="View"/&gt;
                    &lt;/h:column&gt;
                &lt;/h:dataTable&gt;
                &lt;br/&gt;</strong>
            &lt;/h:form&gt;
</pre>
        
        <li>Salve as alterações.</li>
    </ol>
    <p>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 <tt>prepareView</tt> no bean gerenciado. O método <tt>prepareView</tt> retornará "browse" e abrirá o <tt>browse.xhtml</tt>.</p>

    <p class="notes"><strong>Observação.</strong> Quando você digitar a tag <tt>&lt;f:facet></tt>, o IDE adicionará a declaração da biblioteca de tags <tt>xmlns:f="http://java.sun.com/jsf/core</tt>. <strong>Confirme se a biblioteca de tags está declarada no arquivo.</strong></p>

    
    <!-- +++++++++++++++ Create browse.xhtml +++++++++++++++  -->
    <a name="07b"></a>
    <h3>Criando <tt>browse.xhtml</tt></h3>
    <p>Agora você criará a página <tt>browse.xhtml</tt> 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 <tt>template.xhtml</tt> que você criou.</p>
    <ol>
        <li>Clique com o botão direito do mouse no nó do projeto DVDStore na janela Projetos e selecione Novo > Outro.</li>
        <li>Selecione Cliente de Modelo de Facelets na categoria JavaServer Faces. Clique em Próximo.<br /> <img alt="Tela do Cliente de Modelo de Facelets no assistente de Novo Arquivo" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hib-faceletsclient.png" title="Tipo de arquivo Cliente de Modelo de Facelets no assistente Novo Arquivo"></li>
        <li>Digite <strong>browse</strong> para o Nome do Arquivo.</li>
        <li>Localize o Modelo da página clicando em Procurar para abrir a caixa de diálogo Procurar Arquivos.</li>
        <li>Expanda a pasta Páginas Web e selecione <tt>template.xhtml</tt>. Clique em Selecionar Arquivo.<br /> <img alt="tela da caixa de diálogo Procurar Arquivos" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hib-browsetemplate.png" title="Selecione o modelo na caixa de diálogo Procurar Arquivos"></li>
        <li>Selecione <strong>&lt;ui:composition></strong> para a Tag Raiz Gerada. Clique em Finalizar.
        <p>Quando você clica em Finalizar, o arquivo <tt>browse.xhtml</tt> abrirá no editor com o código a seguir.</p>
        <pre class="examplecode">&lt;ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
    template="./template.xhtml"&gt;

    &lt;ui:define name="top"&gt;
        top
    &lt;/ui:define&gt;

    &lt;ui:define name="body"&gt;
        body
    &lt;/ui:define&gt;

&lt;/ui:composition&gt;</pre>
        <p>É possível ver que o novo arquivo especifica o arquivo <tt>template.xhtml</tt> e que a tag <tt>&lt;ui:define></tt> possui a propriedade <tt>name="body"</tt> </p>
        </li>
        <li>Adicione o código a seguir (em negrito) entre as tags <tt>&lt;ui:define></tt> para criar o form e chamar os métodos no FilmController do Bean gerenciado para recuperar os dados e preencher o form.
            <pre class="examplecode">&lt;ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
    template="./template.xhtml"
    <strong>xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"</strong>&gt;

        &lt;ui:define name="top"&gt;
            top
        &lt;/ui:define&gt;

        &lt;ui:define name="body"&gt;
        <strong>
            &lt;h:form&gt;
                &lt;h:panelGrid columns="2"&gt;
                    &lt;h:outputText value="Title:"/&gt;
                    &lt;h:outputText value="#{filmController.selected.title}" title="Title"/&gt;
                    &lt;h:outputText value="Description"/&gt;
                    &lt;h:outputText value="#{filmController.selected.description}" title="Description"/&gt;
                    &lt;h:outputText value="Genre"/&gt;
                    &lt;h:outputText value="#{filmController.category}"/&gt;

                    &lt;h:outputText value="Cast"/&gt;
                    &lt;h:outputText value="#{filmController.actors}"/&gt;


                    &lt;h:outputText value="Film Length"/&gt;
                    &lt;h:outputText value="#{filmController.selected.length} min" title="Film Length"/&gt;

                    &lt;h:outputText value="Language"/&gt;
                    &lt;h:outputText value="#{filmController.language}" title="Film Length"/&gt;

                    &lt;h:outputText value="Release Year"/&gt;
                    &lt;h:outputText value="#{filmController.selected.releaseYear}" title="Release Year"&gt;
                        &lt;f:convertDateTime pattern="MM/dd/yyyy" /&gt;
                    &lt;/h:outputText&gt;
                    &lt;h:outputText value="Rental Duration"/&gt;
                    &lt;h:outputText value="#{filmController.selected.rentalDuration}" title="Rental DUration"/&gt;
                    &lt;h:outputText value="Rental Rate"/&gt;
                    &lt;h:outputText value="#{filmController.selected.rentalRate}" title="Rental Rate"/&gt;
                    &lt;h:outputText value="Replacement Cost"/&gt;
                    &lt;h:outputText value="#{filmController.selected.replacementCost}" title="Replacement Cost"/&gt;
                    &lt;h:outputText value="Rating"/&gt;
                    &lt;h:outputText value="#{filmController.selected.rating}" title="Rating"/&gt;
                    &lt;h:outputText value="Special Features"/&gt;
                    &lt;h:outputText value="#{filmController.selected.specialFeatures}" title="Special Features"/&gt;
                    &lt;h:outputText value="Last Update"/&gt;
                    &lt;h:outputText value="#{filmController.selected.lastUpdate}" title="Last Update"&gt;
                        &lt;f:convertDateTime pattern="MM/dd/yyyy HH:mm:ss" /&gt;
                    &lt;/h:outputText&gt;
                &lt;/h:panelGrid&gt;
                &lt;br/&gt;
                &lt;br/&gt;
                &lt;h:commandLink action="#{filmController.prepareList}" value="View All List"/&gt;
                &lt;br/&gt;
            &lt;/h:form&gt;
</strong>
        &lt;/ui:define&gt;
    &lt;/ui:composition&gt;
&lt;/html&gt;</pre>
        <p>É possível ver que os arquivos <tt>browse.xhtml</tt> e <tt>index.xhtml</tt> utilizarão o mesmo modelo de página.</p>
        </li>
        <li>Salve as alterações.</li>
    </ol>


     <a name="07b"></a>
    
</div>

<a name="09"></a>
<h2>Executando o Projeto</h2>
<p>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.</p>
<ol>
    <li>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.
    <p>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 <tt>http://localhost:8080/DVDStore/</tt> que exibe a lista de filmes.</p>

    <img alt="Tela do browser exibindo a lista de filme na página de índice" class="margin-around b-all" src="../../../images_www/articles/72/web/hibernate-webapp/hib-browser1.png" title="Tela do browser exibindo a lista de filme na página de índice">
    </li>
    <li>No browser, clique em "Exibir" para carregar o <tt>browse.xhtml</tt> e exibir os detalhes do filme.<br />
    </li>
</ol>



    <a name="10"></a>
    <h3>Fazendo Download do Projeto da Solução</h3>
    <p>Você pode fazer o download da solução para este projeto como um projeto das seguintes formas.</p>
    <ul>
        <li>Faça download <a href="https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/DVDStoreEE6.zip">de um arquivo compactado zip do projeto finalizado</a>.</li>
        <li>Faça o check-out do código-fonte do projeto das Amostras do NetBeans ao executar as etapas a seguir:
            <ol>
                <li>Escolha Equipe > Subversion > Efetuar check-out no menu principal.</li>
                <li>Na caixa de diálogo Efetuar Check-out, insira o Repositório URL a seguir:<br /> <tt>https://svn.netbeans.org/svn/samples~samples-source-code</tt><br /> Clique em Próximo.</li>
                <li>Clique em Procurar para abrir a caixa de diálogo Procurar nas Pastas do Repositório:</li>
                <li>Expanda o nó raiz e selecione <strong>samples/javaee/DVDStoreEE6</strong>. Clique em OK.</li>
                <li>Especifique a Pasta Local dos códigos-fonte.</li>
                <li>Clique em Finalizar.
                    <p>Quando você clica em Finalizar, o IDE inicializa a pasta local como um repositório Subversion e verifica os códigos-fonte do projeto.</p>
                </li>
                <li>Clique em Abrir Projeto na caixa de diálogo exibida quando o check-out for concluído.</li>
            </ol>
            <p class="notes"><strong>Observações.</strong> Para saber mais sobre a instalação do Subversion, consulte a seção <a href="../ide/subversion.html#settingUp">Configurando o Subversion</a> no <a href="../ide/subversion.html">Guia do Subversion no NetBeans IDE</a>.</p>
        </li>
    </ul>


    <a name="11"></a>
    <h3>Solução de Problemas</h3>
    <p>A maioria dos problemas que ocorrem com a aplicação do tutorial são devidos a dificuldades de comunicação entre o GlassFish Server Open Source Edition e o servidor de banco de dados MySQL. Se sua aplicação não for exibida corretamente, ou se estiver recebendo um erro do servidor, você pode verificar a seção <a href="mysql-webapp.html#troubleshoot">Solução de Problemas</a> do tutorial <a href="mysql-webapp.html">Criando uma Aplicação Web Simples Usando um Banco de Dados MySQL</a> ou o tutorial <a href="../ide/mysql.html">Estabelecendo Conexão a um Banco de Dados MySQL</a>.</p>
    
    <p>Se fizer download e executar o projeto da solução, você verá o seguinte erro na janela de Saída se for a primeira vez que você implantou uma aplicação que usa o banco de dados My SQL.</p>
    
    <pre class="examplecode">
    SEVERE: JDBC Driver class not found: com.mysql.jdbc.Driver
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509)

        [...]

	at java.lang.Thread.run(Thread.java:680)

    SEVERE: Initial SessionFactory creation failed.org.hibernate.HibernateException: JDBC Driver class not found: com.mysql.jdbc.Driver
    INFO: cleaning up connection pool: null
    INFO: Domain Pinged: stable.glassfish.org</pre>
    
    <p>Em sua janela do browser você pode ver um <tt>java.lang.ExceptionInInitializerError</tt> e o seguinte rastreamento de pilha.</p>
    <pre class="examplecode">
    java.lang.ExceptionInInitializerError
	at dvdrental.HibernateUtil.&lt;clinit&gt;(HibernateUtil.java:28)
	...
    Caused by: org.hibernate.HibernateException: JDBC Driver class not found: com.mysql.jdbc.Driver
	
	... 
    Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	... </pre>
    
    <p>A mensagem de saída declara que o driver JDBC do banco de dados MySQL não foi encontrado. O motivo mais provável é que você precisa adicionar o arquivo do driver JDBC de MySQL em sua instalação do servidor GlassFish. Para confirmar se o driver não foi encontrado, navegue até o diretório <tt><em>GLASSFISH-INSTALL</em>/glassfish/domains/domain1/lib</tt> em seu sistema local (no qual <em>GLASSFISH-INSTALL</em> é seu diretório de instalação GlassFish). Se o diretório <tt>domain1/lib</tt> não contiver o arquivo do driver JDBC (por exemplo, <code>mysql-connector-java-5.1.13-bin.jar</code>) você precisa copiar o driver JDBC para o diretório. O driver JDBC de MySQL não é adicionado à sua instalação do GlassFish quando você instala o servidor.
    </p>
        
    <p>Você pode adicionar uma cópia do driver JDBC do MySQL para sua instalação do GlassFish executando as seguintes etapas.
    <ol>
        <li>Faça download do <a href="http://dev.mysql.com/downloads/connector/j/">Conector MySQL/driver J JDBC</a>.</li>
        <li>Extrai o driver e copie o arquivo do driver (por exemplo, <code>mysql-connector-java-5.1.13-bin.jar</code>) para o diretório <tt>domain1/lib</tt> de sua instalação do GlassFish.</li>
    </ol>
        
    <p>Se preferir, quando usar o IDE para criar uma aplicação que usa o banco de dados MySQL, o IDE pode automaticamente copiar o driver JDBC de MySQL para o servidor GlassFish quando você implantar o projeto, se necessário. Para confirmar se o IDE copiará os drivers JDBC necessários, escolha Ferramentas > Servidores do menu principal para abrir o gerenciador de Servidores e confirmar que a opção Ativar Implantação do Driver JDBC é selecionada para seu servidor GlassFish.</p>
    <p>Depois de criar e implantar uma aplicação web que usa o banco de dados MySQL, se você navegar para o diretório <code>domain1/lib</code> de sua instalação GlassFish local você verá que o diretório contém o arquivo do driver JDBC.</p>

    

<div class="feedback-box"><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Using%20Hibernate%20in%20a%20Web%20Application">Enviar Feedback neste Tutorial</a></div>
<br style="clear:both;" />

<h2>Consulte Também</h2>
    <ul>
        <li><a href="jsf20-support.html">Suporte a JSF 2.x no NetBeans IDE</a></li>
        <li><a href="jsf20-intro.html">Introdução ao JavaServer Faces 2.x</a></li>
        <li><a href="../../trails/java-ee.html">Trilha de Aprendizado do Java EE e Java Web</a></li>
    </ul>

   
</body>
</html>
