style="WIDTH: 199px; HEIGHT: 263px" alt="" hspace=0 src="/loja/img/Capa_SQL45_G.gif" align=bottom border=0>

Clique aqui para ler todos os artigos desta edição

Mapeamento objeto relacional com o SQLMaps

 

Hoje em dia, muito esforço durante o desenvolvimento de um software acontece no campo de mapeamento objeto-relacional (OR), com o hibernate tendo aparentemente assumido a liderança sobre outros frameworks. Mas existe um problema com as ferramentas de mapeamento objeto-relacional: a maioria dos administradores de bancos de dados parecem ficar pouco à vontade com as queries geradas por estas ferramentas. Estes DBAs não compreendem o quão importante é um framework que gera queries automaticamente, e o quão flexível ele torna o seu aplicativo. Estas ferramentas partem do princípio que, sendo o banco de dados o primeiro gargalo de seu aplicativo, você deveria ter controle total sobre as queries do SQL para que eles possam analisá-las e adaptá-las para execução.

Mas o problema é que, caso você não use uma ferramenta de mapeamento OR, então você despenderá de muitos recursos escrevendo e mantendo um código JDBC de baixo nível. Todo aplicativo JDBC terá código repetitivo para:

·         Gerenciamento de conexão e transação;

·         Configuração de objetos Java como parâmetros de query;

·         Conversão de ResultSets SQL em objetos Java;

·         Criação de queries.

 

O framework iBatis SQLMaps (http://ibatis.apache.org/) lhe ajuda a reduzir significativamente a quantidade de código Java que você normalmente precisa para acessar um banco de dados relacional. Ele cuida de três dos interesses apresentados acima, permitindo um fácil mapeamento de um objeto JavaBean para parâmetros de PreparedStatement e valores do ResultSet. A filosofia por trás de SQLMaps é simples: fornecer um framework simples para proporcionar 80% da funcionalidade do JDBC.

Este artigo é um tutorial passo a passo sobre como usar o framework SQLMaps. Começaremos criando um aplicativo simples utilizando Struts e configurando este aplicativo para usar o SQLMaps. Feito isto, apresentaremos como executar operações básicas do banco de dados como SELECT, INSERT, UPDATE, etc. Em seguida, cobriremos quais as opções que o SQLMaps fornece para a gerência de conexão e de transação. Por fim, tentaremos usar algumas características avançadas do SQLMaps, por exemplo, armazenamento e paginação.

 

A idéia básica por trás do SQLMaps

Para usar o framework SQLMaps, você precisa criar um arquivo XML que lista todas as consultas do SQL que você deseja executar através de seu aplicativo. Para cada query do SQL, você especifica com que classe Java a query trocará parâmetros e ResultSets.

Dentro de seu código Java, quando você quer executar uma determinada consulta, você criará um objeto para passar parâmetros da query e condições necessárias, e então passará este objeto e o nome da query a ser executada para o SQLMaps. Uma vez que a query é executada, o SQLMaps criará um exemplo da classe que você especificou para receber os resultados da consulta, e o povoará com valores do ResultSet retornado pelo banco de dados.

 

Estudo de caso utilizando o SQLMaps

Começaremos criando um exemplo de aplicativo utilizando Struts para demonstrar o que é preciso alterar no seu aplicativo para usar o SQLMaps. Neste estudo de caso, o aplicativo criará uma página JSP que solicita ao usuário o item contactId. Uma vez que esta página é submetida, nós utilizamos o valor digitado para buscar um contato na tabela CONTATO. O resultado desta consulta será exibido ao usuário usando outra página JSP.

Para utilizar o SQLMaps na sua aplicação siga as instruções:

1.      Copie ibatis-sqlmap-2.jar e ibatis-common-2.jar para o seu diretório web-inf/lib;

2.      Crie um arquivo SqlMapConfig.xml na sua pasta Java, com o código apresentado na Listagem 1.

 

<sqlMapConfig>

    <settings useStatementNamespaces="false" />

    <transactionManager type="JDBC">

        <dataSource type="SIMPLE" >

            <property name="JDBC.Driver"

                value="COM.ibm.db2.jdbc.app.DB2Driver"/>

            <property name="JDBC.ConnectionURL"

                value="jdbc:db2:SAMPLE"/>

            <property name="JDBC.Username"

                value="db2admin"/>

...

Quer ler esse conteúdo completo? Tenha acesso completo