Esse artigo faz parte da revista Java Magazine edição 07. Clique aqui para ler todos os artigos desta edição

-HEIGHT: 15.05pt">JDBC3

Uma das APIs mais maduras de Java, o JDBC evolui sem sobressaltos, e a versão mais recente vem sendo gra­dualmente adotada pela indústria

 

A API JDBC abriu as portas do mundo corporativo para Java, tornando possível a expansão da tecnologia dentro das grandes empresas; a importância da API é compro­vada pela sua inclusão no J2SE e J2EE e pela adoção extensiva pelo mercado.

A versão final da especificação mais recente – JDBC 3.0 – foi lançada há mais de um ano, mas ainda está em processo de adoção; alguns drivers implementam as principais mudanças (veja links), no entanto muitos estão apenas começando a atingir a aderência à nova especificação. O JDBC 3 vem com relativa­mente poucas funcionalidades adicionais, o que demonstra o grau de maturidade da API – mais que inventar coisas novas, os especialistas procuraram focar em funcionalidades que melho­rassem o desempenho e aumentassem a flexibilidade, partindo da excelente base construída nas versões anteriores.

Antes de entrar em detalhes sobre as novidades, é importante destacar que, ao tentar usar as novas funcionalidades especifica­das, seja verificado como o driver JDBC escolhido interage com o banco de dados. Nem todas as extensões são implementadas pelos drivers – ou mesmo suportadas pelos bancos de dados. Cada banco de dados tem suas particularidades, portanto, algo que seja extremamente rápido, ou que consuma poucos recursos, por exemplo, no Oracle, pode não ter o mesmo comportamento no DB2.

Savepoints

Os savepoints são marcações intermediárias que podem ser feitas dentro do contexto de uma tran­sação. Usando savepoints, você pode marcar um ponto de uma transação e posteriormente desfazer todo o trabalho até esse ponto, sem que seja neces­sário desfazer a transação inteira. Por exemplo, se um programa chama vários outros em seqüência, pode-se definir um savepoint antes de cada cha­mada – caso um dos programas venha a falhar, é fácil retornar ao estado original dos dados antes da chamada, e depois invocá-lo novamente ou realizar alguma ação de recuperação. Veja um exemplo de uso de savepoints na Listagem 1.

Notas:

• Você pode usar o método DatabaseMetaData.supportsSavepoints para determinar se o driver oferece suporte a essa funcionalidade;

• Todos os savepoints criados são automaticamente descartados quando a transação for confirmada ou desfeita;

• Savepoints não podem ser utilizados para demarcação de commit (não se pode confirmar uma transação até um save­point), ou de “batch updates” (conjuntos de comandos SQL executados em lotes). Se for criado algum savepoint antes de ser chamado o método executeBatch de um Statement, PreparedStatement ou CallableStatement, o savepoint será definido antes do primeiro comando adicionado com o método addBatch. ...

Quer ler esse conteúdo completo? Tenha acesso completo