Olá!
No banco de dados Oracle, além de guardar dados é possivel criar rotinas para manipulá-los. A linguagem default é o PL/SQL mas é possivel criar rotinas em Java.
Teoricamente é possível usar todos os recursos da linguagem e de mais algumas tecnologias como Java Mail, JMS, fazer chamadas a EJBs. Acredito que só não seja possível usar classes de interface gráfica (JFrame, JPanel e etc.).
No caso do JavaMail é preciso que o objeto tenha um grant especial senão ele conseguirá enviar os emails.
Abaixo um exemplo de classe que executa um update em uma tabela de paramêtros.

create or replace and compile java source named
Parametro as

import java.sql.*;
import oracle.jdbc.driver.*;

public class Parametro {
  public static java.lang.String
                            atualizarParam(java.lang.String codigo,
                                                java.lang.String valor)
                                                throws SQLException { 

    // Obtem um conexão com o banco de dados
    Connection conn = new OracleDriver().defaultConnection();

    String sql = "UPDATE tab_param SET " +
                    "vlr_par = ? WHERE cod_param = ?";

    // Todos os parametros devem estar preenchidos
    if (codigo == null || valor == null){
       return "Parametros nulo";
    }

    try {

      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, valor);
      pstmt.setString(2, codigo);
      pstmt.executeUpdate();
      pstmt.close();
      conn.commit();

    } catch (SQLException e) {
        return e.getMessage();
    }

    return "OK";
  }
}

Como não é possível chamar a classe Java diretamente, preciamos criar uma função PL/SQL encarregada de invocar o método da classe Java.

create or replace function fun_atualizar(codigo varchar2, valor varchar2)
  return varchar2 is
  LANGUAGE JAVA NAME 'Parametro.atualizarParam(java.lang.String, java.lang.String) return java.lang.String';

Código para testar a função.

declare
     retorno varchar2(500);
begin
     retorno := fun_atualizar('parametro','valor');

     dbms_output.put_line(retorno);

exception
     when others then
        dbms_output.put_line('Erro -> ' || sqlerrm);
end;

Caso ocorrer esse erro:

ORA-29531: no method atualizarParam in class Parametro

Verifique se os tipo dos paramêtros na function atualizar estão corretos, por exemplo:
- Se o nome das classes estão completos. Ao invés de String deve estar java.lang.String;
- Se os tipos primitivos estão todas em minúsculas. No lugar de Int deve ser int ou FLOAT deve ser float.

Até mais

Olá,

Uma dica para quem deseja instalar uma aplicação feita em ADF 11G no Tomcat 6.x ao invés do Weblogic é ler este post How to deploy a 11g ADF application on Tomcat 6.x. Ainda não tive oportunidade de testar.

Se funciona pro Tomcat pode funcionar pro Jetty também.

Até mais,

Roberto


Instalando o JDeveloper 11G

08/outubro/2008 - Oracle

Olá!

Fiz a instalação do JDeveloper 11G. A primeira vista a inclusão de instalador facilitou a vida de quem usa o protocolo NNF (Next, Next, Finish), eu ainda prefiro o arquivo zip que você descompacta e roda um bat.

Talvez a inclusão de um instalador foi motivada pela troca da porcaria do OC4J por uma versão embbeded do WebLogic Application Server e por ter o JDK 6 embutido na distribuição.

Esta versão está mais “leve” que a TP4, consigo trabalhar confortavelmente com um P4 com 1GB de RAM.

Até mais,
Roberto

Olá!

A Oracle realmente me surpreendeu com o JDeveloper 11G, os novos componentes de tela baseados em AJAX são espetaculares e a criação de aplicações CRUD baseadas em tabelas com formulários master/detail para web ficou muito fácil e rápido.
Estou testando a versão Preview 4, ainda não é a versão final mas está usável.

Além de poder desenvolver código Java – EJB3, JPA, Swing, Webservices, Servlets, o JDeveloper oferece ferramentas para projetar diagramas UML e MER, escrever scripts SQL e migrar aplicativos feitos em Oracle Forms para ADF com FORMS2ADF. Eu não era muito fã do JDeveloper por ser uma IDE proprietária e na primeira vez que eu usei ele não achei muito legal.
Mas nem tudo são flores, o JDeveloper come muita memória em média de 500MB em um micro core 2 duo 1,67 MHz com 2Gb de ram a performance é satisfatório e temos colocar mais uns 200MB para o servidor OC4J. Alias o OC4J é outra coisa que a Oracle precisa melhorar, quem sabe com a aquisição da BEA ele não embutem um Weblogic no JDeveloper daqui um tempo.
Outra desvantagem, é que para usar confortavelmente é recomendado usar um monitor grande de 19″ no mínimo por que tem muitas janelinhas ao redor da janela principal, se você tiver um monitor pequeno vai ser um abre-e-fecha constante.

Figura 1 – Visão geral do ambiente de desenvolvimento do JDeveloper 11G.

Figura 2 – Tela do JDeveloper 11G.

O desenvolvimento usando o ADF 11G simplificou muito o desenvolvimento de aplicações comerciais. O ADF 11G faz muito uso de AJAX como vocês podem ver nos screen shots abaixos.

Figura 3 – Mensagem de erro do validador do ADF.

Figura 4 – Exemplo de um LOV – List of Values, essa tela é exibida quando clicamos na lupa ao lado do campo Usuário.

Figura 5 – Lista de mensagens de erros do validador do ADF.

Figura 6 – Calendário, um dos componentes do ADF.

Figura 7 – Tela de pesquisa e seleção, é um LOV mais avançado que anterior.

Figura 8 – Tela gerada com base em uma tabela.

Figura 9 – Tabela criada com input texts para filtro e botões de ordenação. O recurso de internacionalização i18n das mensagens dos componentes do ADF pode ser conferida na mensagem “Classificar por Ordem Crescente”.

Figura 10 – Componente select  populado via AJAX produzido automaticamente.

Tudo o que foi criado, os formulários, as listas de valores – LOVs, os botões, as tabelas, foram feitos sem escrever uma linha de código. Os desenvolvedores mais conservadores podem torcer o nariz para essas ferramentas drag n’ drop, mas são ferramentas que facilitam e aceleram o desenvolvimento, agora como vai ser manutenção do código e a performance da mesma ainda não descobri.

É claro que é possível fazer tudo na mão usando, mas se for para fazer tudo na mão com Dojo, Rich Faces ou qualquer outro framework da moda é melhor o Eclipse mesmo, que na minha opinião ainda possuí o melhor e mais inteligente editor de código que o JDeveloper 11G.

Todas as novas funcionalidades estão listadas nesse link.
Espero que a Oracle lance logo a versão final desta IDE.

Até mais,
Roberto