Fonte do artigo: Fórum de banco de dados Autor: jackma
A API Java Database Connectivity (JDBC) é uma série de interfaces que permitem aos programadores Java acessar bancos de dados. As interfaces de vários desenvolvedores não são exatamente as mesmas. Depois de usar o JDBC da Oracle por muitos anos, acumulei muitas habilidades que podem nos permitir utilizar melhor o desempenho do sistema e obter mais funções.
1. Use o driver Thin no desenvolvimento de software cliente
Em termos de desenvolvimento de software Java, o banco de dados da Oracle fornece quatro tipos de drivers, dois para software cliente, como software aplicativo, miniaplicativos e servlets, e os outros dois para software do lado do servidor, como procedimentos armazenados Java no banco de dados. No desenvolvimento de software do lado do cliente, podemos escolher o driver OCI ou o driver Thin. O driver OCI utiliza a Java Localization Interface (JNI) para se comunicar com o banco de dados por meio do software cliente Oracle. O driver Thin é um driver Java puro que se comunica diretamente com o banco de dados. Para desempenho máximo, a Oracle recomenda o uso de drivers OCI no desenvolvimento de software cliente, e isso parece estar correto. Mas eu recomendo usar o driver Thin, porque através de muitos testes foi descoberto que o desempenho do driver Thin excede o do driver OCI em circunstâncias normais.
2. Desligue a função de envio automático para melhorar o desempenho do sistema
Quando você estabelece uma conexão com o banco de dados pela primeira vez, a conexão está no modo de confirmação automática por padrão. Para melhor desempenho, você pode desativar o recurso de autocommit chamando o método setAutoCommit() da classe Connection com um parâmetro booleano false, conforme mostrado abaixo:
conn.setAutoCommit(falso);
É importante notar que, uma vez desativada a função de confirmação automática, precisamos gerenciar manualmente a transação chamando os métodos commit() e rollback() da classe Connection.
3. Use objetos de instrução em SQL dinâmico ou comandos com limite de tempo
Ao executar comandos SQL, temos duas opções: você pode usar objetos PreparedStatement ou objetos Statement. Não importa quantas vezes você use o mesmo comando SQL, PreparedStatement apenas o analisa e compila uma vez. Ao usar o objeto Statement, cada vez que um comando SQL é executado, ele é analisado e compilado. Isso pode fazer você pensar que usar objetos PreparedStatement é mais rápido do que usar objetos Statement. No entanto, os testes que fiz mostram que no software cliente esse não é o caso. Portanto, em operações SQL com tempo limitado, a menos que os comandos SQL sejam processados em lotes, devemos considerar o uso de objetos Statement.
Além disso, o uso de objetos Statement também facilita a gravação de comandos SQL dinâmicos porque podemos concatenar strings para construir um comando SQL válido. Portanto, acredito que o objeto Statement pode facilitar a criação e execução de comandos SQL dinâmicos.
4. Use funções auxiliares para formatar comandos SQL dinâmicos
Ao criar comandos SQL dinâmicos executados usando objetos Statement, precisamos lidar com alguns problemas de formatação. Por exemplo, se quisermos criar um comando SQL que insira o nome O'Reilly em uma tabela, devemos substituir o sinal "'" em O'Reilly por dois sinais "''" consecutivos. A melhor maneira de fazer isso é criar um método auxiliar que execute a operação de substituição e, em seguida, usar o método auxiliar criado quando a cadeia de conexão for expressa como um comando SQL usando uma fórmula. Da mesma forma, podemos fazer com que o método auxiliar aceite um valor de Data e, em seguida, gerar uma expressão de string baseada na função to_date() do Oracle.
5. Use objetos PreparedStatement para melhorar a eficiência geral do banco de dados
Ao usar um objeto PreparedStatement para executar um comando SQL, o comando é analisado e compilado pelo banco de dados e, em seguida, colocado no buffer de comando. Então, sempre que o mesmo objeto PreparedStatement for executado, ele será analisado novamente, mas não compilado novamente. Comandos pré-compilados são encontrados no buffer e podem ser reutilizados. Em aplicativos de nível empresarial com um grande número de usuários, os mesmos comandos SQL são frequentemente executados repetidamente. A redução no número de compilações provocada pelo uso de objetos PreparedStatement pode melhorar o desempenho geral do banco de dados. A menos que criar, preparar e executar tarefas PreparedStatement no lado do cliente demore mais do que tarefas Statement, eu recomendaria usar objetos PreparedStatement em todos os casos, exceto para comandos SQL dinâmicos.
6. Use objetos PreparedStatement no processamento em lote de operações repetidas de inserção ou atualização <br /> <br /> Se as operações de inserção e atualização forem processadas em lotes, o tempo necessário para elas pode ser significativamente reduzido. O Statement e o CallableStatement fornecidos pela Oracle não oferecem suporte ao processamento em lote. Somente o objeto PreparedStatement realmente oferece suporte ao processamento em lote. Podemos escolher o processamento em lote JDBC padrão usando os métodos addBatch() e executeBatch(), ou escolher o método proprietário da Oracle mais rápido, utilizando o método setExecuteBatch() do objeto PreparedStatement e o método executeUpdate() padrão. Para usar o mecanismo de lote proprietário da Oracle, você pode chamar setExecuteBatch() conforme mostrado abaixo:
PreparedStatement pstmt3D null;
tentar {
((OraclePreparedStatement)
pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}