Usando SQLJ ao invés de JDBC

10 respostas
danieldestro

:twisted:
E ai pessoal, meu primeiro post. A primeira vez nunca esquecemos.

JDBC é sem dúvida uma ótima sacada de Java, mas existe uma ferramenta chamada SQLJ, criada pela Oracle, para facilitar o uso de JDBC, ou melhor, acesso ao banco.

SQJL é uma casca sobre o JDBC, que te permite muito mais facilmente escrever código de acesso ao banco.

Segue exemplo de código em SQLJ:

//no arquivo Pessoa.sqlj

import java.sql.*;
import sqlj.runtime.ref.*;
import sqlj.runtime.ConnectionContext;

public class Pessoa {

  private String nome;
  private Integer idade;
  private Integer id;

  private TesteSQLJContext ctx;

  public void select() {
    #sql [ctx] {
      SELECT ID, NOME, IDADE
         INTO :id, :nome, :idade
         FROM PESSOA
       WHERE ID = :id
    };
  }

  public void insert() {
    #sql [ctx] {
      INSERT INTO PESSOA (ID, NOME, IDADE)
        VALUES(:id, :nome, :idade)
    };
  }

   public void setConnection( Connection conn ) throws SQLException {
      ctx = new TesteSQLJContext( conn );
   }

   public void releaseConnection() {
      try { if(ctx!=null) ctx.close(ConnectionContext.KEEP_CONNECTION); }
      catch(Throwable e) {}
   }
}


//no arquivo TesteSQLJContext.sqlj

import sqlj.runtime.ref.*;
import java.sql.*;
#sql public context TesteSQLJContext;

Para tanto você precisa da API do SQLJ da Oracle, encontrada facilmente na TECHNET da Oracle. Agora, não me perguntem se é grátis.

Se quiserem posso postar um Artigo só sobre isso.

abraços

10 Respostas

Rafael_Steil

Duvida basica: isso funciona com qualquer database? :shock:

danieldestro

Funciona sim. Onde trabalho já usamos com Oracle 7, 8.1.5, 8.1.7, 8i e 9i, MS-SQL Server e MySQL.

Só tome cuidado pra não usar features específicas de um banco-de-dados.

Paulo_Silveira

Hoje um cara da Oracle me contou que a oracle esta incentivando você escrever as stored procedures em SQLJ e java, ao invés de PLSQL, pode uma coisa dessas?

O SAP também, ta saindo de ABAP para java!!!

java rulez!

Rafael_Steil

hhhmm… bom saber, tava pensando em adquirir um livro de plsql por esses dias, mas com base nisso vou ver se acho algo de sqlj e o plsql fica nos help online mesmo 8)

Leonardo

Pelo que pesquisei na Oracle eles continuarão a desenvolver tanto o PLSQL quanto o suporte a Java diretamtne no database.

há umas três semanas a Oracle promoveu o Oracle Java Day. e ao que tudo indica Java & Oracle é realmente pra valer ! :smiley:

Aproveitando… o que me dizem a respeito do Oracle 9iAS ? :wink:

danieldestro

Eu ainda acho que vale mto a pena saber PLSQL. Eu uso isso… pra um cliente nosso, fazendo mto da lógica no oracle em PLSQL… qndo muda alguma coisa, é só mudar a procedure ou function… e o fonte java nem se move… claro que ha limites de alteracoes que nao impactariam no programa java, mas de qq forma escrever um codigo PL no SQLJ fica carregado demais…

a gente apenas chama a proc pelo SQLJ

fsamir

Olá.

Leonardo,

Sobre o Ora9ias, vou contar uma pequena história:
Usamos aqui na empresa. No nosso caso, o sistema é todo desenvolvido em forms, por uma equipe formada por um revendedor de oracle.
Um certo dia eles precisaram colocar parte do sistema na web. Sem sombra de dúvida o revendedor atolou o IAS neles(U$$ 10.000,00).
Foi ai q eu entrei na história, pra desenvolver o tal sist. pra web.
Desenvolvi tudo em ciam de Tomcat e na hora de portar pro IAS deu um monte de problemas.
Primeiro, não havia santo que alterasse o timeout do servidor. Depois de muitos chamados na oracle, e centenas de alterações em arquivos de configuração. O problema foi resolvido com o da maneira Microsoft (apaga e instala denovo). Milagrosamente funcionou.
Outros problemas como este surgiram mas, eu teria que escrever um livro (talvez o título fosse “Eu odeia o IAS”).
O atual problema é que não é possível atulizar a versão do servlets.jar. Não adianta trocar o pacote. A desculpa da oracle é que o IAS é uma versão fechada, e se eu quiser alterar qualquer coisa nele, preciso comprar a nova release. Aliás eles dão um suporte horrível para o IAS (o suporte para o Banco é muito bom).
Fico me perguntando como devo pagar pra atualizar uma API que é GRÀTIS!!!

Finalizando, se vc não precisa usar coisas que só rodam em IAS (imagino isto. De repente até rodem em outra ferramenta e eu não to sabendo) como forms server, pl/sql server side e outras cacas destas, não joge U$$10.000,00 fora.
No final da história quando mostrei que dava pra usar o Tomcat (free) ao invés do IAS (10.000 mangos) pro diretor da empresa, que pagou por ele, o cara queria enfiar a cabeça dentro da lata de lixo.

lrpfeliciano

Puxa vida, qual a vantagem em gastar 10 pilas, sabendo que existe algo gratuito.

fcoury

Para alguns, software livre e gratuito != menos caro. E para alguns casos eles têm razão. Alguns softwares pagos não têm um concorrente open source com o nível de suporte que se faz necessário. Na maioria das vezes, tudo se resume a: se tudo der errado, gostaria de ter a quem culpar :smiley:

W

Daniel Destro wrote:

JDBC é sem dúvida uma ótima sacada de Java, mas existe uma ferramenta chamada SQLJ, criada pela Oracle, para facilitar o uso de JDBC, ou melhor, acesso ao banco.
Como em toda ferramenta ou projeto da Oracle sempre existe uma IBM na sombra e, para mostrar que não estou errado.:

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/r0010333.htm
http://www.devmedia.com.br/visualizacomponente.aspx?comp=1344&site=6
http://www.dsc.ufcg.edu.br/~baptista/cursos/BDadosI/SQLJ.ppt

Mais, será que o iBATIS não seria a solução. :?

Criado 4 de setembro de 2002
Ultima resposta 19 de out. de 2006
Respostas 10
Participantes 8