Pular para o conteúdo

Desenvolvendo uma aplicação CRUD com JDev 11G e ADF

Olá!

Já instalei o JDev 11G (11.1.1.0.0) na minha máquina, um Core2 Duo com 2GB de RAM e está bem melhor que a versão tecnology preview 4.
As principais melhorias e evoluções em relação a versão tecnology preview 4 que consegui analisar são:

  • Uso do servidor Weblogic no lugar do OC4J;
  • Correções de erros no componente ADF Table;
  • Melhorias de performance;
  • Está consumindo menos memória;
  • Deploy da aplicação mais rápido;
  • O help agora abre em uma nova janela e não dentro da IDE;

Pontos negativos que encontrei:

  • O desenvolvimento ainda se prende muito ao WebLogic, não consegui ainda usar o JDev com JBoss ou Tomcat;
  • Não existe um instalador das libs do ADF para tomcat, jboss ou websphere, então você precisa caçando os jars para que aplicação funcione em outro servidor;
  • Ainda não existe nada que facilite a publicação no WebLogic de uma aplicação ADF Swing usando Java WebStart;
  • Ainda consome muita memória que o Eclipse (tá certo que o Eclipse não tem editor drg n´ drop JSF e é isso que pesa);
  • Não achei uma forma fácil de fazer uma chamada a uma stored procedure Oracle;
  • Ele gera muito XML (isso é bom a não ser que você adora XML);

Agora vamos a parte prática. Fazer uma aplicação CRUD usando como base uma tabela é muito simples e não leva mais que 10 minutos. Quando você tiver um pouco mais de prática vai levar no máximo 6 minutos.
Veja abaixo os passos para criar uma aplicação base-table.

Abra o JDev e clique em New Application

Dê um nome para a aplicação, informe os prefixos dos pacotes e selecione o template Fusion Web Application (ADF). Clique em Next.

Altere o diretório se quiser. Clique em Next.

Altere o pacote ou os caminhos de diretório se desejar. Clique em Next.

Aceite os valores defaults. Clique em Next.

Clique em Next.

Clique em Finish.

Tela de controle da aplicação.

Criando uma conexão com o banco de dados.

Informe os dados de usuário/senha, IP/porta e SID do banco de dados. Teste a conexão, se der sucesso clique em Ok. Se não revise os dados.

Agora vamos criar os objetos do projeto Model. Clique com o botão direito em cima do projeto Model, selecione ADF Business Components, no lado direto selecione Business Components from Tables.

Selecione a conexão que acabamos de criar.

Selecione a tabela que servirá de base para a aplicação. Clique em Next.

Clique em Finish.

Agora vamos criar uma página JSF em branco. Clique com o botão direito do mouse sobre o projeto ViewController, selecione New.  Clique em JSF e no lado direito selecione JSP page.

Dê um nome para o arquivo. Marque a opção Create as XML Document, não é obrigatório, mas eu prefiro o jspx.

A página foi criada e o editor JSF carregado (aqui vai demorar um pouco para carregar o editor).

Abra a aba Data Controls, selecione CountryCodeView1 e arraste para dentro da página JSP. No menu flutuante selecione Forms, ADF Form.

Marque a opção Include Navigation Controls e clique em Ok.

Agora vamos incluir no formulário os botões para inserir linhas, dar rollback e comitar . Na aba DataControls abra a árvore do CountryCodeView1 e arraste para o JSP CreateInsert (Abre um novo registro), Find (Abre o form em modo de busca), Execute (Executa a busca).

Os botões Commit e Rollback são criados apartir das operações que estão abaixo de AppModuleDataControl, clique e arraste para dentro do JSP, um de cada vez.

Agora vamos rodar a aplicação, clique com o botão direito sobre o JSP e selecione Run (Ctrl + F11).

Se tudo deu certo e nada deu errado, o browser será aberto com a página que nós criamos com o nosso formulário.

Exemplo de como o ADF mostra os erros de validação.

No dia-a-dia esses wizards ajudam muito, principalmente por que é entendiante ficar desenvolvendo CRUDs na mão. Em Struts normalmente eu criava 2 JSP (uma para listar e outro o formulário) e 4 actions (uma para obter a lista de entidades, outra para salvar os dados do formulário no banco, outro para buscar os dados de um registro para ser editado no formulário e por fim uma action para deletar registros. É claro que é necessário um estudo sobre performance de consulta e manutenção disso.
Espero ter ajudado.
Até mais,
Roberto

8 comentários em “Desenvolvendo uma aplicação CRUD com JDev 11G e ADF”

  1. Roberto,
    Trabalho com adm. de banco e desenvolvimento com PL/SQL.
    Estou dando uma estudada no Jdeveloper,explorando melhor dizendo.E quero aprender a fazer estes paginas CRUDs que você diz,mas não estou conseguindo rodar elas no browser.Quais configurações são necessárias?Você poderia me passar um checklist?

  2. Cara,
    Tô com problema para fazer o “Run” até criar está criando,mas na hora do rum,num está indo.Exibe alguns erros como:

    [Deployer:149034]An exception occurred for task [Deployer:149026]deploy application test_adf on DefaultServer.: Failed to load webapp: ‘test_adf-Model-context-root’.
    weblogic.application.ModuleException: Failed to load webapp: ‘test_adf-Model-context-root’
    #### Deployment incomplete. #### Feb 11, 2009 7:11:55 AM
    oracle.jdeveloper.deploy.DeployException
    at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.doDeploymentAction(Jsr88RemoteDeployer.java:247)
    at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.deployImpl(Jsr88RemoteDeployer.java:157)
    at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
    at oracle.jdevimpl.deploy.fwk.WrappedDeployer.deployImpl(WrappedDeployer.java:39)
    at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
    at oracle.jdeveloper.deploy.common.BatchDeployer.deployImpl(BatchDeployer.java:82)
    at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
    at oracle.jdevimpl.deploy.fwk.WrappedDeployer.deployImpl(WrappedDeployer.java:39)
    at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
    at oracle.jdevimpl.deploy.fwk.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:436)
    at oracle.jdeveloper.deploy.DeploymentManager.deploy(DeploymentManager.java:209)
    at oracle.jdevimpl.runner.adrs.AdrsStarter$5$1.run(AdrsStarter.java:1365)
    Caused by: oracle.jdeveloper.deploy.DeployException
    at oracle.jdevimpl.deploy.common.Jsr88DeploymentHelper.deployApplication(Jsr88DeploymentHelper.java:413)
    at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.doDeploymentAction(Jsr88RemoteDeployer.java:238)
    … 11 more
    Caused by: oracle.jdeveloper.deploy.DeployException: Deployment Failed
    at oracle.jdevimpl.deploy.common.Jsr88DeploymentHelper.deployApplication(Jsr88DeploymentHelper.java:395)
    … 12 more
    #### Cannot run application test_adf due to error deploying to DefaultServer.
    [Application test_adf stopped and undeployed from Server Instance DefaultServer]

    1. Cancela, descobri… muito fácil…

      não sabia que existia uma ferramenta tão show de bola como essa, tão rica e produtividade e tratamento dos erros, tão fácil e poderosa, nossa, tô espantado mesmo.

      Roberto, show! seu post realmente me tirou dias de trabalho, o ganho com a ferramenta é muito grande e juntando com oracle 10mil x melhor…

      Dá p fazer TUDO!

      Muito obrigado!!!

      1. andrejus,i used custom covrtneer as suggested by steve and now its working but there is one more problem that if we try to enter negative values then its throwing the exception in another page with 500 internal server error like thismodule:ADFDomainValidation-ViewController-context-root path:/ADFDomainValidation-ViewController-context-root spec-version:2.5]] Servlet failed with Exceptionoracle.jbo.JboException: Salary value cant be negative: -98 !and ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase PROCESS_VALIDATIONS 3oracle.jbo.JboException: Salary value cant be negative: -98 !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *