NetBeans - Criando o Banco de Dados

213 views
Skip to first unread message

Paulo Sérgio da Silva Pacheco

unread,
Apr 3, 2014, 2:24:25 PM4/3/14
to evolucao...@googlegroups.com

Criando o Banco de Dados MYSQL

Este tutorial usa um banco de dados de agência de consultoria chamado consultar . O banco de dados não está incluído quando você instala o IDE, portanto, você precisa primeiro criar o banco de dados para seguir este tutorial.

consulta de banco de dados foi criado para demonstrar o escopo do suporte do IDE para manipular uma variedade de estruturas de banco de dados. O banco de dados, portanto, não pretende ser um exemplo de design de banco de dados recomendado ou melhores práticas. Em vez disso, ele tenta incorporar muitas das características relevantes que são potencialmente encontrados em um projeto de banco de dados. Por exemplo, a consulta do banco de dados contém todos os tipos de relacionamento possíveis, chaves primárias compostas e muitos tipos de dados diferentes. Consulte as tabelas abaixo para obter uma visão mais detalhada da estrutura do banco de dados.

Notas:

  • Este tutorial usa o servidor de banco de dados MySQL, mas você também pode completar o tutorial usando o servidor de banco de dados JavaDB. Para criar o banco de dados JavaDB, baixar e extrair o javadb-consult.zip arquivo. O arquivo contém os scripts SQL para criar, soltar e preencher a consultar banco de dados.
  • Para mais informações sobre a configuração do IDE para trabalhar com MySQL, consulte o Conexão com um banco de dados MySQL tutorial.
  • Para mais informações sobre a configuração do IDE para trabalhar com JavaDB, veja o trabalho com o Java DB (Derby) Banco de dados tutorial.

MySQL com GlassFish Combinação:

Se você estiver usando o MySQL, e estão usando GlassFish v3 ou Open Source Edition 3.0.1, você deve garantir que seu banco de dados é protegido por senha. (Para mais informações, consulte GlassFish Issue 12221 .) Se você estiver usando o MySQL padrão raiz conta com uma senha em branco, você pode definir a senha de um prompt de linha de comando. , por exemplo, para definir sua senha para nbuser , em um comando -line pronta digite os seguintes comandos.

shell> mysql-u root
mysql> ATUALIZAÇÃO mysql.user SET Password = PASSWORD (' nbuser ') ONDE User =' root ';
mysql> FLUSH PRIVILEGES;

Se você receber um ' mysql: comando não encontrado "erro, então o mysql comando não tenha sido adicionado ao seu PATH variável de ambiente. Em vez disso, você pode chamar o comando, digitando o caminho completo para de instalação do MySQL bin diretório. Por exemplo, se o mysql comando está localizado em seu computador em / usr / local / mysql / bin , digite o seguinte:

shell> / usr / local mysql / bin / root / mysql-u

Para mais informações, consulte o Manual de Referência do MySQL oficial:



Execute as seguintes etapas para criar um banco de dados e conectar a ele a partir do IDE.

  1. Baixe mysql-consult.zip e extraia o arquivo para o seu sistema local. Quando você extrair o arquivo, você verá os scripts SQL para criar e preencher o banco de dados. O arquivo também tem scripts para eliminação de tabelas.
  2. Na janela Serviços, expanda o nó Bancos de dados, clique com o botão direito no nó MySQL e escolha Iniciar servidor.
  3. Botão direito do mouse no nó Servidor MySQL e escolha Criar banco de dados.
  4. Digite consultar como o nome do banco de dados na caixa de diálogo Criar banco de dados MySQL. Clique em OK. Um novo nó aparece sob o nó Bancos de dados ( jdbc: mysql :/ / localhost: 3306/consult [root no esquema padrão] ).
  5. Botão direito do mouse no novo nó e escolha Conectar.
  6. Escolha Arquivo> Abrir arquivo no menu principal e navegue até o arquivo extraído mysql_create_consult.sql . Clique em Abrir. O arquivo se abre automaticamente no editor SQL. 
    Captura de tela do editor SQL
  7. Certifique-se de que a consulta de banco de dados está selecionado na lista suspensa Conexão na barra de ferramentas do editor SQL e clique no SQL Run ( Botão Executar SQL botão).

    Ao clicar em Executar SQL, a seguinte saída será exibida na janela de saída.

    Captura de tela da janela de saída

Examinando a estrutura do banco de dados

Para confirmar que as tabelas foram criadas corretamente, expanda o nó Tabelas sob o nó da conexão do banco de dados. Você pode expandir um nó da tabela para ver as colunas da tabela, índices e todas as chaves estrangeiras. Você pode clicar com o botão direito em uma coluna e escolha Propriedades para exibir informações adicionais sobre a coluna.

Captura de tela da janela Serviços

Nota: Se você não ver nenhuma tabela sob o nó Tabelas, clique com o botão direito do mouse no nó Tabelas e escolha Atualizar.

Olhando para a estrutura da consulta de banco de dados, você pode ver que o banco de dados contém tabelas que possuem uma variedade de relacionamentos e vários tipos de campo. Ao criar classes de entidade de um banco de dados, o IDE gera automaticamente o código apropriado para os vários tipos de campo.

Diagrama Entidade-relação de consultar banco de dados

A tabela a seguir descreve as tabelas encontradas no consultar banco de dados.

Tabela do banco de dados DescriçãoCaracterísticas Design
CLIENTE Um cliente da agência de consultoriaNão-gerada, a chave primária composta (cujos campos não constituem uma chave estrangeira)
CONSULTORUm funcionário da agência de consultoria que os clientes podem contratar com base num contrato Inclui um campo de retomada do tipo LONG VARCHAR
CONSULTANT_STATUS O status de um consultor na agência de consultoria (por exemplo, Ativo e Inativo são status possíveis)Não gerada chave primária do tipo CHAR
RECRUTAUm funcionário da agência de consultoria responsável por conectar clientes e consultores  
PROJETO Um projeto que um cliente possui com os consultores da agência de consultoriaNão-gerada, a chave primária composta que inclui dois campos que constituem uma chave estrangeira para a tabela CLIENT
BILLABLEUm conjunto de horas trabalhadas por um consultor em um projeto, para o qual a agência de consultoria cobra do cliente relevante Inclui um campo de artefato do tipo CLOB
ENDEREÇO Endereço de faturamento de um cliente 
PROJECT_CONSULTANT Junte-se a tabela indicando quais consultores estão atualmente atribuídos a projectos quePROJECT e consultor referências cruzadas, o primeiro tendo uma chave primária composta

consulta de banco de dados inclui uma variedade de relacionamentos. Ao criar classes de entidade de um banco de dados, o IDE gera automaticamente as propriedades do tipo Java apropriado com base no tipo SQL das colunas. A tabela a seguir descreve as relações de entidade para a consulta de dados. (Relações inversas não são mostrados.)

EntidadeEntidade relacionada Informações sobre relacionamentoDescrição
CLIENTERECRUTAnulo um para um com edição manual; nulo um-para-muitos, se não editada CLIENT tem muitos recrutadores e RECRUTA possui zero ou um cliente (caso não seja editado manualmente)
CLIENTEENDEREÇOnão-nulo um-para-um CLIENT tem um endereço e possui zero ou um CLIENT
CLIENTEPROJETO não-nulo um para muitos; em uma entidade de projeto, o valor do campo cliente é parte da chave primária do projeto CLIENT tem muitos projetos e PROJECT possui um CLIENT
CONSULTORPROJETO muitos-para-muitosCONSULTOR tem muitos projetos e PROJECT possui muitos consultores
CONSULTORBILLABLE não-nulo um-para-muitosCONSULTOR tem muitas billables e BILLABLE tem um CONSULTOR
CONSULTANT_STATUSCONSULTORnão-nulo um-para-muitos CONSULTANT_STATUS tem muitos consultores e consultor tem uma CONSULTANT_STATUS
CONSULTOR RECRUTAnulo um-para-muitosCONSULTOR possui zero ou um recrutador e RECRUTA tem muitos consultores
BILLABLEPROJETO não-nulo um-para-muitosBILLABLE tem um projeto e PROJECT possui muitos billables

Agora que o banco de dados é criado, você pode criar o aplicativo da Web e usar as classes de entidade do assistente de banco de dados para gerar classes de entidade com base nas tabelas de banco de dados.

Criando o projeto de aplicativo Web

Neste exercício, você cria um projeto web e adicionar o framework JavaServer Faces ao projeto. Ao criar o projeto, você irá selecionar JavaServer Faces no painel Frameworks do assistente para Novo projeto.

  1. Escolha Arquivo> Novo projeto (Ctrl-Shift-N; ⌘-Shift-N no Mac) no menu principal.
  2. Selecione Aplicação Web na categoria Web Java. Clique em Avançar.
  3. Digite ConsultingAgency para o nome do projeto e defina a localização do projeto. Clique em Avançar.
  4. Defina o servidor como GlassFish e defina a versão Java EE para Java EE 6 Web ou Java EE 7 Web. Clique em Avançar.
  5. No painel Frameworks, selecione a opção JavaServer Faces. Clique em Concluir.

Ao clicar em Terminar, o IDE gera o projeto de aplicação Web e abre index.xhtml no editor.

Gerando as classes de entidade do banco de dados

Depois de se conectar a um banco de dados no IDE, você pode usar as classes de entidade a partir do banco de dados do assistente para gerar rapidamente as classes de entidade com base nas tabelas do banco de dados. O IDE pode gerar classes de entidade para cada tabela que você selecionar, e também pode gerar quaisquer classes de entidade necessárias para tabelas relacionadas.

  1. Na janela Projetos, clique com o botão direito do ConsultingAgency nó do projeto e escolha Novo> Classes de entidade do banco de dados. (Se esta opção não estiver na lista, escolha Outro. Em seguida, no assistente de arquivo, selecione a categoria Persistence, então Classes de entidade do banco de dados.)
  2. Selecione Nova fonte de dados a partir da lista suspensa Fonte de dados para abrir a caixa de diálogo Criar fonte de dados.
  3. Digite jdbc / consult como o Nome JNDI e selecione o jdbc: mysql :/ / localhost: 3306/consult conexão como a conexão de banco de dados. 
    Caixa de diálogo Criar fonte de dados
  4. Clique em OK para fechar a caixa de diálogo e retornar ao assistente. As tabelas a consultar banco de dados aparecem na caixa de listagem Tabelas disponíveis.
  5. Clique no botão Adicionar tudo para selecionar todas as tabelas contidas no banco de dados. Clique em Avançar. 
    Novas entidades de assistente de banco de dados
  6. Digite jpa.entities como o nome do pacote.
  7. Confirme se as caixas de seleção para gerar consultas nomeadas e criar uma unidade de persistência são selecionados. Clique em Concluir.

Ao clicar em Terminar, o IDE gera as classes de entidade no jpa.entities pacote do projeto.

Ao utilizar o assistente para criar classes de entidade de um banco de dados, o IDE examina as relações entre as tabelas do banco de dados. Na janela Projetos, se você expandir o jpa.entities nó do pacote, você pode ver que o IDE gerou uma classe de entidade para cada tabela, exceto para a PROJECT_CONSULTANT mesa. O IDE não criou uma classe de entidade para PROJECT_CONSULTANT porque a tabela é uma tabela de junção.

screenshot da janela Projetos

O IDE também gerou duas classes adicionais para as tabelas com chaves primárias compostas: CLIENT e PROJECT . As classes de chave primária dessas tabelas ( ClientPK.java e ProjectPK.java ) possuem PK anexado ao nome.

Se você olhar para o código gerado para as classes de entidade que você pode ver que o assistente adicionou @ GeneratedValue anotações para os campos ID gerados automaticamente e @ Básico (opcional = "false") anotações para alguns dos campos nas classes de entidade. Com base no @ Básico (= "false" opcional) anotações, as páginas JSF de assistente Classes de entidade pode gerar o código que inclui verificações para evitar violações de coluna não nulo para esses campos.


Gerando páginas JSF de classes de entidade

Agora que as classes de entidade são criados, você pode criar a interface Web para exibir e modificar os dados. Você vai usar as páginas JSF de assistente Classes de entidade para gerar páginas JavaServer Faces. O código gerado pelo assistente é baseado em anotações de persistência contidas nas classes de entidade.

Para cada classe de entidade o assistente gera os seguintes arquivos.

  • um bean de sessão sem estado, que se estende AbstractFacade.java
  • uma sessão de escopo, bean gerenciado JSF
  • um diretório contendo quatro arquivos Facelets para os recursos CRUD ( Create.xhtml , Edit.xhtml , List.xhtml e View.xhtml )

O assistente também gera os seguintes arquivos.

  • AbstractFacade.java classe que contém a lógica de negócios para criação, recuperação, modificação e remoção de instâncias de entidade
  • classes de utilitários usados ​​pelo JSF managed beans ( JsfUtil , PaginationHelper )
  • um conjunto de propriedades para mensagens localizadas e uma entrada correspondente no arquivo de configuração Faces do projeto (A faces-config.xml arquivo é criado se não existir.)
  • arquivos auxiliares da web, incluindo uma folha de estilo padrão para componentes convertidos e um arquivo de modelo Facelets

Para gerar as páginas JSF:

  1. Na janela Projetos, clique com o botão direito no nó do projeto e escolha Novo> Páginas JSF de classes de entidade para abrir o assistente. (Se esta opção não estiver na lista, escolha Outro. Então, no assistente de arquivo, selecione a categoria JavaServer Faces, então Páginas JSF de classes de entidade.)

    O Disponível caixa Classes de entidade enumera as sete classes de entidade contidas no projeto. A caixa não lista as classes incorporadas ( ClientPK.java e ProjectPK.java ).

  2. Clique em Adicionar tudo para mover todas as classes para a caixa de Classes de entidade selecionadas. Clique em Avançar.
    Novas páginas JSF de assistente Classes de entidade 
  3. Na etapa 3 do assistente, Gerar Páginas e Classes JSF, tipo jpa.session para o JPA Session Bean Package.
  4. Digite jsf para o pacote de classes JSF.
  5. Digite ' / resources / Bundle 'no campo Localização Bundle Name. Isso irá gerar um pacote chamado recursos que o Bundle.properties arquivo irá residir dentro (Se você deixar este campo em branco, as propriedades pacote será criado no pacote padrão do projeto.) 
    Novas páginas JSF de assistente Classes de entidade, a etapa 3

    Para deixar o IDE melhor acomodar as suas convenções do projeto, você pode personalizar todos os arquivos gerados pelo assistente. Clique no link Personalizar modelo para modificar os modelos de arquivos utilizados pelo assistente. Em geral, você pode acessar e fazer alterações em todos os modelos mantidos pelo IDE usando o Template Manager (Ferramentas> Modelos).
    Lista suspensa template Personalizar 

  6. Clique em Concluir. O IDE gera os beans de sessão sem estado no jpa.session pacote, e as sessões de escopo, beans gerenciados JSF no jsf pacote. Cada bean de sessão sem estado manipula as operações para a classe de entidade correspondente, incluindo a criação, edição e destruição de instâncias da classe de entidade por meio da API Java Persistence. Cada bean gerenciado JSF implementa a javax.faces.convert.Converter interface e executa o trabalho de converter as instâncias da classe de entidade correspondente à corda objetos e vice-versa.

Se você expandir o nó Páginas da Web, você pode ver que o IDE gerou uma pasta para cada uma das classes de entidade. Cada pasta contém os arquivos Create.xhtml , Edit.xhtml , List.xhtml e View.xhtml . O IDE também modificou o index.xhtml arquivo através da inserção de links para cada uma das List.xhtml páginas.

Captura de tela do diretório Páginas da Web na janela Projetos

Cada bean gerenciado JSF é específica para os quatro arquivos Facelets correspondentes e inclui o código que chama os métodos no bean de sessão apropriado.

Expanda a recursos nó pasta para localizar o defeito jsfcrud.css estilo que foi gerado pelo assistente. Se você abrir a página de boas vindas do aplicativo ( index.xhtml ) ou o arquivo de modelo Facelets ( template.xhtml ) no editor, você verá que ele contém uma referência à folha de estilo.

<h:outputStylesheet name="css/jsfcrud.css"/>

O arquivo de modelo Facelets é utilizado por cada um dos quatro arquivos Facelets para cada classe de entidade.

Se você expandir o nó Pacotes de fontes você pode ver os beans de sessão, beans gerenciados JSF, classes de serviços públicos, e conjunto de propriedades que o assistente gerado.

screenshot da Fonte Pacotes diretório na janela Projetos

O assistente também gerado um arquivo de configuração Faces ( faces-config.xml ) para registrar a localização das propriedades pacote. Se você expandir o nó Arquivos de configuração e abrir faces-config.xml no editor de XML, você pode ver que a seguinte entrada está incluída.

<application>
    <resource-bundle>
        <base-name> / resources / Bundle </ base-name>
        <var> pacote </ var>
    </ Resource-bundle>
</ Application>

Além disso, se você expandir o novo recursos do pacote, você encontrará o Bundle.properties arquivo que contém mensagens para o idioma padrão do cliente. As mensagens foram derivadas das propriedades da classe entidade.

Para adicionar um novo conjunto de propriedades, clique com o botão direito do Bundle.properties arquivo e escolha Personalizar. O diálogo Customizer permite adicionar novos locais para a sua aplicação.


Explorando o Aplicativo

Agora que seu projeto contém classes de entidade, beans de sessão EJB para controlar as classes de entidade, e um JSF potência front-end para exibir e modificar dados, tente executar o projeto para ver os resultados.

O que se segue é uma série de exercícios curtos, opcionais que ajudam você a se familiarizar com o aplicativo, bem como os recursos e funcionalidades oferecidas pelo IDE.

Examinando o projeto concluído

  1. Para executar o projeto, ou clique com o botão direito no nó do projeto na janela Projetos e escolha Executar ou clique no Executar projeto ( Botão Executar projeto botão) na barra de ferramentas principal.

    Quando da aplicação da página de boas-vindas for exibida, você é fornecido com uma lista de links que permitem que você visualize as entradas contidas em cada tabela do banco de dados.

    ConsultingAgency página de boas vindas no navegador

    Os links foram adicionados à página de boas-vindas ( index.xhtml ) quando concluído o Páginas JSF do assistente Classes de entidade. Eles são fornecidos como pontos de entrada para as páginas Facelets que fornecem funcionalidade CRUD no banco de dados da agência de consultoria.

    <h:body>
        Olá do Facelets
        <h:form>
            <h:commandLink action="/address/List" value="Show Todos Endereço Items"/>
        </ H: form>
        <h:form>
            <h:commandLink action="/billable/List" value="Show Todos faturável Items"/>
        </ H: form>
        <h:form>
            <h:commandLink action="/client/List" value="Show Todos Cliente Items"/>
        </ H: form>
        <h:form>
            <h:commandLink action="/consultant/List" value="Show Todos Consultor Items"/>
        </ H: form>
        <h:form>
            <h:commandLink action="/consultantStatus/List" value="Show Todos ConsultantStatus Items"/>
        </ H: form>
        <h:form>
            <h:commandLink action="/project/List" value="Show Todos os Projeto Items"/>
        </ H: form>
        <h:form>
            <h:commandLink action="/recruiter/List" value="Show Todos Recruiter Items"/>
        </ H: form>
    </ H: body>
  2. Clique no botão " Mostrar Todos os itens do consultor 'link. Olhando para o código acima, você pode ver que a página de destino é / consultor / List.xhtml . (Em JSF 2.x, a extensão do arquivo é deduzida devido à navegação implícita.) O banco de dados atualmente não contém dados de amostra. Você pode adicionar dados manualmente, clicando no botão ' Criar novo consultor link 'e utilizando o formulário on-line fornecido. Isto provoca o consultor / / Create.xhtml página para exibir. Você também pode executar um script SQL no IDE para preencher tabelas com dados de amostra. As sub-seções seguintes exploram as duas opções.
    Página Consultants 

Você pode clicar no link do índice para voltar aos links listados na página de boas-vindas. Os links fornecê-lo com uma visão dos dados contidos em cada tabela do banco de dados e desencadear o List.xhtml arquivo para cada pasta de entidade para exibir. Como é demonstrado mais tarde, depois de adicionar dados às tabelas, outros links serão exibidos para cada entrada permitindo que você visualize ( View.xhtml ), edição ( Edit.xhmtl ) e destruir os dados de um único registro da tabela.

Nota. Se o aplicativo não consegue implantar, consulte a seção de solução de problemas abaixo. (Veja também a seção de solução de criação de uma aplicação Web simples usando um banco de dados MySQL ).

Preenchendo o banco de dados com um script SQL

Execute o script fornecido, que gera dados de amostra para as tabelas do banco de dados. O roteiro ( mysql_insert_data_consult.sql ) está incluído no arquivo zip do banco de dados da agência de consultoria que você pode baixar a partir da tabela de software necessário .

Dependendo do servidor de banco de dados que você está trabalhando (MySQL ou JavaDB), você pode executar o script fornecido, que gera dados de amostra para as tabelas do banco de dados. Para o MySQL, este é o mysql_insert_data_consult.sql script.Para JavaDB, este é o javadb_insert_data_consult.sql script. Ambos os scripts são incluídos nos respectivos arquivos, que podem ser baixados da tabela de software necessário .

  1. Escolha Arquivo> Abrir arquivo no menu principal, em seguida, navegue até o local do script no seu computador. Clique em Abrir. O arquivo é aberto automaticamente no editor SQL do IDE.
  2. Certifique-se de que a consulta de banco de dados está selecionado na lista suspensa Conexão na barra de ferramentas do editor SQL. 
    captura de tela do editor SQL e inserir script de dados

    Ou clique com o botão direito no editor e escolha Executar instrução ou clique no Executar SQL ( Botão Executar SQL botão). Você pode ver o resultado da execução do script na janela de saída.

  3. Reinicie o servidor GlassFish. Este é um passo necessário para permitir que o servidor para recarregar e armazenar em cache os novos dados contidos na consulta de banco de dados. Para fazer isso, clique na guia servidor GlassFish na janela de saída (A guia servidor GlassFish exibe o log do servidor.), Depois clique no Restart Server ( Botão Reiniciar servidorbotão) na margem esquerda. O servidor pára, reinicia.
  4. Execute o projeto novamente e clique no botão ' Mostrar todos os itens de Consultoria 'link. Você vai ver que a lista não está mais vazio. 
    Consultores página exibindo as entradas da tabela 

    Suporte de banco de dados NetBeans

    Você pode usar o visualizador de tabelas do banco de dados do IDE para exibir e modificar os dados da tabela mantidos diretamente no banco de dados. Por exemplo, clique com o botão direito do consultor mesa na janela Serviços e escolha Visualizar dados.

    Janela Serviços - clique com o botão direito do menu da tabela de banco de dados

    A consulta SQL usada para executar a ação de monitores na parte superior do editor, e uma visão gráfica da tabela mostra abaixo.

    Editor SQL exibir dados de banco de dados

    Dê um duplo clique no interior das células de tabela para realizar modificações em linha aos dados. Clique na Commit Registros ( Commit Registros íconeícone) para confirmar as alterações para o banco de dados.

    A visualização gráfica oferece muito mais funcionalidade. Consulte Suporte de Banco de Dados no NetBeans IDE para obter mais informações.


Explorando o suporte do editor em páginas Facelets

  1. Abra o consultor / / List.xhtml página no editor. Linha 8 indica que a página conta com os Facelets template.xhtml arquivo para renderizar.
    <ui:composition template="/template.xhtml">

    Para exibir os números de linha, clique com o botão direito na margem esquerda do editor e escolha Mostrar números de linha.

  2. Use Go do IDE para diálogo do arquivo para abrir template.xhtml . Pressione Alt-Shift-O (Ctrl-Shift-O no Mac), em seguida, começar a digitar modelo . 
    Ir para diálogo Arquivo

    Clique em OK (ou pressione Enter).

  3. O modelo aplica as <ui:insert> tags para inserir o conteúdo de outros arquivos em seu título e do corpo. Coloque o cursor sobre o <ui:insert> tag, em seguida, pressione Ctrl-Espaço para chamar uma janela pop-up de documentação. 
    Pop-up da documentação exibida no editor

    Você pode pressionar Ctrl-Espaço no marcações JSF e seus atributos para chamar uma documentação pop-up. A documentação que você vê é tomada a partir das descrições fornecidas no oficial Documentação JSF Tag Library .

  4. Volte para a List.xhtml arquivo (pressione Ctrl-Tab). Os <ui:define> tags são usadas para definir o conteúdo que será aplicado a título eo corpo do modelo. Este padrão é utilizado para todos os quatro arquivos Facelets ( Create.xhtml , Edit.xhtml ,List.xhtml e View.xhtml ) gerados para cada classe de entidade.
  5. Coloque o cursor em qualquer uma das expressões EL utilizados para mensagens localizadas contidas no Bundle.properties arquivo. Pressione Ctrl-Espaço para ver a mensagem localizada. 
    Conclusão Código pop-up de mensagens de conjunto de propriedades

    Na imagem acima, você pode ver que a expressão EL resolve ' lista ', que é aplicado para o título do modelo e pode ser verificada a partir da página renderizada no navegador.

  6. Vá até o final do arquivo e localize o código para o novo consultor Criar link (Linha 92). Esta é a seguinte:
    <h:commandLink action="#{consultantController.prepareCreate}" value="#{bundle.ListConsultantCreateLink}"/>
  7. Pressione Ctrl-Espaço no commandLink da ação atribuir a invocar a documentação pop-up. A ação atributo indica o método que manipula o pedido quando o link é clicado no navegador. A seguinte documentação é fornecida: 



    MethodExpression representando a ação do aplicativo para invocar quando este componente é ativado pelo usuário. A expressão deve ser avaliada como um método público que não tem parâmetros e retorna um objeto (o toString () do que é chamado para obter o resultado lógico), que é passado para o NavigationHandler para esta aplicação.

    Em outras palavras, a ação valor normalmente se refere a um método em um bean gerenciado JSF que avalia um string . A corda é então usada por do JSF NavigationHandler para encaminhar o pedido para a visualização adequada. Você verificar isso nas etapas seguintes.
  8. Coloque o cursor sobre consultantController e pressione Ctrl-Espaço. Conclusão de código do editor indica que consultantController é um bean gerenciado JSF. 
    Conclusão código chamado no editor
  9. Mova o cursor para prepareCreate e pressione Ctrl-Espaço. Métodos de listas de conclusão código contido no consultantController bean gerenciado. 
    Conclusão código chamado no editor
  10. Pressione Ctrl (⌘ no Mac), em seguida, passe o mouse sobre prepareCreate . A ligação é formada, permitindo-lhe navegar diretamente para o prepareCreate () método na consultantController bean gerenciado. 
    Link exibido no editor
  11. Clique no link e ver o prepareCreate () método (exibido abaixo).
    prepareCreate public String () {
        atual = new Consultant ();
        SelectedItemIndex = -1;
        retorno "Criar";
    }
    O método retorna Criar . O NavigationHandler reúne informações nos bastidores, e aplica-se a criar string para o caminho que tem como alvo a visão enviada em resposta ao pedido: / consultor / Criar xhtml. . (Em JSF 2.x, a extensão do arquivo é deduzida devido à navegação implícita.)

Explorando a integridade do banco de dados com validação de campo

  1. A partir da página Lista de Consultores no navegador, clique no botão ' Criar novo consultor link '. Como demonstrado na sub-seção anterior, este aciona o consultor / Create.xhtml / página para renderizar.
  2. Insira os seguintes detalhes no formulário. Por enquanto, deixe ambos os RecruiterId e StatusId campos em branco. 

    Campo Valor
    ConsultantId2
    Emailjack.smart @ jsfcrudconsultants.com
    Senhajack.smart
    HourlyRate 75
    BillableHourlyRate110
    HireDate07/22/2008
    Resumo Eu sou um grande consultor. Contrate-me - Você não vai se decepcionar!
    RecruiterId ---
    StatusId---
  3. Clique em Salvar. Quando você fizer isso, um erro de validação é sinalizado para o StatusId campo. Por que isso aconteceu? Reexaminar o diagrama de entidade-relacionamento do banco de dados da agência de consultoria . Como indicado na tabela de relacionamentos acima, o CONSULTOR e CONSULTANT_STATUS tabelas partes, uma relação não-nulo um para muitos. Portanto, cada entrada na CONSULTOR tabela deve conter uma referência a uma entrada na CONSULTANT_STATUS mesa. Isto é indicado pelaconsultant_fk_consultant_status chave estrangeira, que liga as duas tabelas. 
    Criar página Consultor New contendo dados de amostra 

    Você pode visualizar as chaves estrangeiras detidas por tabelas expandindo o nó Chaves estrangeiras de uma tabela na janela Serviços (Ctrl-5; ⌘ -5 no Mac).

    Serviços janela - chaves estrangeiras para a tabela consultor
  4. Para superar o erro de validação, selecione entity.ConsultantStatus [statusId = A] do StatusId . lista suspensa Nota: Você pode deixar o RecruiterId campo em branco. Como indicado na base de dados diagrama de entidade-relacionamento , há uma relação nulo um-para-muitos entre o CONSULTOR e RECRUTA tabelas, o que significa que as entradas na CONSULTOR não precisa estar associada a um RECRUTA entrada.

  5. Clique em Salvar. Uma mensagem é exibida, indicando que a entrada consultor foi salva com sucesso. Se você clicar em Mostrar Todos os itens do consultor , você vai ver a nova entrada listada na tabela.

Em geral, as páginas Facelets gerados erros para fornecer entrada de utilizador que apresenta:

  • campos vazios para as células da tabela não anuláveis.
  • modificações de dados que não podem ser alteradas (por exemplo, as chaves primárias).
  • inserção de dados que não é do tipo correto.
  • modificações de dados quando vista de um usuário não está sincronizado com o banco de dados.

Edição de classes de entidade

Na sub-seção anterior, você viu como o StatusId lista suspensa desde que com o não tão user-friendly entity.ConsultantStatus [statusId = A] opção. Você pode já estar ciente de que o texto exibido para cada item neste drop-down é uma representação de cadeia para cada ConsultantStatus entidade encontrou (ou seja, a classe de entidade ' toString () método é chamado).

Esta sub-seção demonstra como você pode usar a conclusão de código do editor, documentação e suporte de navegação para fazer esta conclusão. Ele também se preparar uma mensagem mais amigável para a lista drop-down.

  1. Abra o / consultor / Create.xhtml arquivo no editor. Esta é a forma Consultor New Criar qual você apenas exibida no navegador. Desloque-se para o código para o StatusId drop-down (mostrado em negrito abaixo).
        <h:outputLabel value="#{bundle.CreateConsultantLabel_resume}" for="resume" />
        <h:inputTextarea rows="4" cols="30" id="resume" value="#{consultantController.selected.resume}" title="#{bundle.CreateConsultantTitle_resume}" />
        <h:outputLabel value="#{bundle.CreateConsultantLabel_statusId}" for="statusId" />
        <h:selectOneMenu id="statusId" value="#{consultantController.selected.statusId}" title="#{bundle.CreateConsultantTitle_statusId}" required="true" requiredMessage="#{bundle.CreateConsultantRequiredMessage_statusId}">
            <f:selectItems value="#{consultantStatusController.itemsAvailableSelectOne}"/>
        </ H: selectOneMenu>
        <h:outputLabel value="#{bundle.CreateConsultantLabel_recruiterId}" for="recruiterId" />
        <h:selectOneMenu id="recruiterId" value="#{consultantController.selected.recruiterId}" title="#{bundle.CreateConsultantTitle_recruiterId}">
            <f:selectItems value="#{recruiterController.itemsAvailableSelectOne}"/>
        </ H: selectOneMenu>
    </ H: panelGrid>
  2. Examine o valor aplicado ao <f:selectItems> tag. O valor atributo determina o texto exibido para cada item na lista drop-down. Pressione Ctrl-Espaço no itemsAvailableSelectOne . Conclusão de código do editor indica que oConsultantStatusController 's getItemsAvailableSelectOne () método retorna um array de SelectItem objetos. 


    Conclusão código chamado no editor
  3. Pressione Ctrl (⌘ no Mac), em seguida, passe o mouse sobre itemsAvailableSelectOne . A ligação é formada, permitindo-lhe navegar diretamente para o getItemsAvailableSelectOne () método na ConsultantStatus código fonte da entidade.Clique neste link.
  4. Coloque o cursor sobre o SelectItem [] valor de retorno na assinatura do método e pressione Ctrl-Espaço para chamar a documentação pop-up. 
    Documentação pop-up invocado na classe Java

    Clique o navegador web ( Ícone do navegador Webícone) na janela da documentação para abrir o Javadoc em um navegador externo.

    Como você pode ver, o ItemSeleção classe pertence ao quadro JSF. O UISelectOne componente, tal como mencionado na documentação, é representado pela <h:selectOneMenu> etiqueta de marcação que lhe examinada em Passo 1 acima.
  5. Pressione Ctrl (⌘ no Mac), em seguida, passe o mouse sobre findAll () . Um pop-up aparece, exibindo a assinatura do método. Você pode ver que aqui ejbFacade.findAll () retorna uma lista de ConsultantStatus objetos.
    Pop-up de assinatura do método 
  6. Navegue até JsfUtil.getSelectItems . Passe o mouse sobre getSelectItems e pressione Ctrl (⌘ no Mac) e clique no link que aparece. Observação: Lembre-se que JsfUtil é uma das classes de utilitários que foi gerado quando você completou a Páginas JSF do assistente Classes de entidade . O método percorre a lista de entidades (ou seja, a lista de ConsultantStatus objetos), criando um SelectItem para cada um. Como indicado na negrito abaixo, cada SelectItem é criado usando o objeto de entidade e um rótulo para o objeto. 



    ItemSeleção public static [] getSelectItems (List <?> entidades, boolean selectOne) {
        int size = selectOne? entities.size () + 1: entities.size ();
        SelectItem [] itens = new SelectItem [tamanho];
        int i = 0;
        if (selectOne) {
            itens [0] = new SelectItem ("", "---");
            i + +;
        }
        para (Object x: entidades) {
            itens [i + +] = new SelectItem (x, x.toString ());
        }
        devolver os itens;
    }

    O rótulo é criado usando a entidade toString () método, e é a representação do objeto quando processado na resposta. (Veja a definição Javadoc para o ItemSeleção valor java.lang.Object, etiqueta java.lang.String) ( construtor).

    Agora que você verificou que a entidade toString () método é o que é processado no navegador quando você exibir itens em uma lista drop-down, modifique o ConsultantStatus toString () método.

  7. Abra o ConsultantStatus classe de entidade no editor. Modifique o toString método para retornar o statusId e descrição . Estas são propriedades da entidade que correspondem às duas colunas da CONSULTANT_STATUS tabela.
    public String toString () {
        voltar statusId + "," + descrição; 
    }
  8. Execute o projeto novamente. Quando o navegador exibe a página de boas-vindas, clique na Mostrar todos os itens Consultor ligação, clique em Criar novo consultor .

    Inspecione o StatusId drop-down. Você verá que ele agora exibe o status de ID e uma descrição para o registro contido no banco de dados CONSULTANT_STATUS mesa.

    Exibição do navegador de lista suspensa StatusId

Solução de problemas

Dependendo da configuração, a implantação do aplicativo para o servidor pode falhar e você pode ver a seguinte mensagem na janela de saída.

GlassFish Server 4 está em execução.
Implantação no local em / MeusDocumentos / ConsultingAgency / build / web
GlassFish Server 4, implantar nula, falsa
/ Meus Documentos / ConsultingAgency / nbproject / build-impl.xml: 1045: O módulo não foi implementado.
Veja o log do servidor para obter detalhes.

A causa mais comum para a falha é um problema quando a gerar os recursos JDBC no servidor. Se este for o caso, você provavelmente verá uma mensagem semelhante à seguinte na guia de registro do servidor na janela de saída.

Grave: Exception, enquanto prepara o app: recurso inválido: jdbc / consult__pm
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: recurso inválido: jdbc / consult__pm

Se a guia de registro do servidor não está aberto, você pode abrir a guia clicando com o botão direito no nó do servidor GlassFish na janela Serviços e escolhendo Exibir Domínio log do servidor.

Esta aplicação requer dois recursos JDBC:

  • Recursos JDBC ou DataSource. O aplicativo usa JNDI para localizar o recurso JDBC. Se você olhar na unidade de persistência ( persistence.xml ), você pode ver que o nome JNDI para a fonte de dados JTA para esta aplicação é jdbc / consult .

    O recurso JDBC identifica o pool de conexão que está sendo usada pelo aplicativo.

  • Conjunto de Conexões JDBC. O pool de conexão especifica os detalhes da conexão com o banco de dados, incluindo a localização, o nome de usuário, senha. O pool de conexão que é usado para esta aplicação é consultPool .

O recurso JDBC e pool de conexão são especificados no glassfish-resources.xml arquivo. Você pode abrir glassfish-resources.xml no editor, expandindo o nó Recursos do servidor na janela Projetos e clicando duas vezes no arquivo. O arquivo será semelhante ao seguinte.

<? Xml version = "1.0" encoding = "UTF-8">
<! Recursos DOCTYPE PUBLIC "- / / GlassFish.org / / Aplicação DTD GlassFish Server 3.1 Resource Definições / / EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
  <Jdbc-connection-pool permitir-não-componentes-chamadores = "false" associado-com-thread = "false" conexão de criação de Retry-tentativas = "0" conexão de criação de nova tentativa-interval-em-segundos = " 10 "conexão-vazamento reclamar =" false "conexão-escape-timeout-em-segundos =" 0 "conexão-validação do método =" auto-commit "datasource-classname =" com.mysql.jdbc.jdbc2.optional. MysqlDataSource "todos os conexões fail-=" false "idle-timeout-em-segundos =" 300 "está-connection-validação-required =" false "é garantido-isolamento de nível =" true "lazy-connection-association = "false" lazy-connection-alistamento = "false" match-conexões = "false" max-connection-usage-count = "0" max-pool-size = "32" max-esperar-tempo-em-millis = " 60000 "name =" consultPool "não-transacionais-conexões =" "ping =" false false "pool-redimensionar-quantidade =" 2 "pooling =" true "res-type =" javax.sql.DataSource "declaração-cache- size = "0"-declaração de vazamentos reclamar = "false" declaração de vazamentos-timeout-em-segundos = "0" declaração-timeout-em-segundos = "1"-pool-size constante = "8" validar- atmost-vez-período-em-segundos = "0" wrap-jdbc-objetos = "false">
    <property name="serverName" value="localhost"/>
    <property name="portNumber" value="3306"/>
    <property name="databaseName" value="consult"/>
    <property name="User" value="root"/>
    <property name="Password" value="nb"/>
    <property name="URL" value="jdbc:mysql://localhost:3306/consult?zeroDateTimeBehavior=convertToNull"/>
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
  / <jdbc-connection-pool>
  <jdbc-resource enabled="true" jndi-name="jdbc/consult" object-type="user" pool-name="consultPool"/>
/ <resources>

Em glassfish-resources.xml você pode ver que o recurso JDBC jdbc / consult identifica consultPool como o nome do pool de conexão. Você também pode ver as propriedades para consultPool . Nesta aplicação apenas uma fonte de dados e um pool de conexão são definidos em glassfish-resources.xml . Em alguns casos, você pode querer especificar recursos adicionais, por exemplo, para identificar um armazenamento de dados temporário que é usado apenas para o desenvolvimento ou para testes.

Se o recurso JDBC e pool de conexão não foram gerados automaticamente no servidor quando você tentou o aplicativo, você pode executar as seguintes etapas para criar os recursos manualmente no GlassFish Admin Console.

  1. Abra glassfish-resources.xml no editor, se ele já não estiver aberto.

    Você usará os valores de propriedades que são especificadas no glassfish-resources.xml quando você criar o recurso JDBC e pool de conexões.

  2. Botão direito do mouse no nó Servidor GlassFish na janela Serviços e escolha Abrir Domain Admin Console no menu pop-up para abrir o Console do GlassFish no seu browser.
  3. No painel de navegação comum Tarefas do Console GlassFish, expanda o JDBC nó e os Recursos JDBC e JDBC Pools de conexão nós. 
    Exibição do navegador de GlassFish Admin Console

    Você pode ver os recursos JDBC que estão atualmente registrados com o servidor. Você vai precisar para criar jdbc / consultar e consultPool se eles não estão listados sob o nó JDBC no painel de navegação comum tarefas. Alguns recursos de JDBC foram criados por padrão quando você instalou o servidor e são apresentados como sub-nós.

  4. Clique no Pools de conexão JDBC nó e clique em Novo no painel pool de conexão do Novo JDBC. 
    Exibição do navegador do painel pool de conexão JDBC Nova
  5. Digite consultPool como o nome do pool, selecione javax.sql.ConnectionPoolDataSource como o tipo de recurso e selecione MySql como banco de dados driver Vendor. Clique em Avançar.
  6. Na Etapa 2, localizar e especificar os valores para os URL , nome de usuário e senha propriedades. Clique em Concluir. 
    Exibição do navegador de segundo painel do painel pool de conexão JDBC Nova

    Você pode encontrar os valores para as propriedades em glassfish-resources.xml .

    O novo pool de conexão é criada no servidor quando você clicar em Concluir e um nó para o pool de conexão é exibido sob o nó Pools de conexão JDBC.

  7. Clique no Recursos JDBC nó no painel de navegação comum Tarefas e clique em Novo.
  8. Digite jdbc / consult para o Nome JNDI e selecione consultPool na lista suspensa Nome do Pool. Clique em OK. 
    Exibição do navegador de painel novo recurso JDBC

    O novo recurso JDBC é criada no servidor quando você clicar em OK e um nó para o recurso é exibido sob o nó Recursos JDBC.

    Na janela Serviço do IDE, você pode expandir o nó Recursos sob o servidor GlassFish e ver que IDE adicionou novos recursos. Talvez seja necessário atualizar a exibição (clique com o botão direito e escolha Atualizar Recursos) para ver as mudanças.

    imagem da janela Serviços no IDE

Para mais dicas sobre solução de problemas ao usar o MySQL eo IDE, consulte os seguintes documentos:


Consulte também

Para mais informações sobre JSF 2.x, consulte os seguintes recursos.


--
 
Saudações:
Nome...: PAULO PACHECO
Fixo...: 085 3086 6769
Celular: 085 8888 4498 OI
         085 9702 4498 TIM 
 

Reply all
Reply to author
Forward
0 new messages