Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Devo usar PreparedStatements para todas as minhas inserções de banco de dados em Java?


Sim, use declarações preparadas para tudo.

  1. Eles são analisados ​​uma vez.

  2. Eles são imunes a ataques de injeção de SQL.

  3. Eles são um design melhor porque você precisa pensar em seu SQL e como ele é usado.

Se você acha que eles são usados ​​apenas uma vez, você não está olhando para o quadro geral. Algum dia, seus dados ou seu aplicativo mudarão.

Editar.

Por que as declarações preparadas fazem você pensar em seu SQL?

  • Quando você monta uma string (ou simplesmente executa um bloco literal de texto), você não está criando um novo PreparedStatement objeto. Você está apenas executando SQL -- isso pode ser feito muito casualmente.

  • Quando você precisa criar (e salvar) um PreparedStatement , você tem que pensar um pouquinho mais sobre encapsulamento, alocação de responsabilidade. A preparação de uma instrução é um evento stateful antes de qualquer processamento SQL.

O trabalho extra é pequeno, mas não insignificante. É o que faz com que as pessoas comecem a pensar em ORM e uma camada de cache de dados, e coisas assim para otimizar o acesso ao banco de dados.

Com instruções Prepared, o acesso ao banco de dados é menos casual, mais intencional.