sql >> Databáze >  >> RDS >> Mysql

Měl bych používat PreparedStatements pro všechny vložky databáze v Javě?

Ano, na všechno používejte připravené výpisy.

  1. Jsou analyzovány jednou.

  2. Jsou imunní vůči útokům SQL injection.

  3. Jsou lepší, protože musíte přemýšlet o svém SQL a o tom, jak se používá.

Pokud si myslíte, že byly použity pouze jednou, nedíváte se na celkový obraz. Jednoho dne se vaše data nebo vaše aplikace změní.

Upravit.

Proč vás připravené příkazy nutí přemýšlet o vašem SQL?

  • Když sestavíte řetězec (nebo jednoduše spustíte doslovný blok textu), nevytváříte nový PreparedStatement objekt. Právě spouštíte SQL -- lze to udělat velmi náhodně.

  • Když musíte vytvořit (a uložit) PreparedStatement , musíte trochu více přemýšlet o zapouzdření, rozdělení odpovědnosti. Příprava příkazu je stavová událost před provedením jakéhokoli zpracování SQL.

Práce navíc je malá, ale ne bezvýznamná. To způsobuje, že lidé začnou přemýšlet o ORM a vrstvě ukládání dat do mezipaměti a podobně, aby optimalizovali přístup k databázi.

S připravenými výpisy je přístup k databázi méně náhodný, více záměrný.



  1. CodeIgniter přepínací ovladač z mysql --> mysqli

  2. Jak vytvořit dynamické kontingenční tabulky v MySQL

  3. Kdy přidat index do pole tabulky SQL (MySQL)?

  4. Více vztahů ke stejnému modelu CakePHP