根据JDBC文档中对PreparedStatement
的解释,我发现与Statement
相比,它提高了性能。
那么,为什么我们仍然使用Statement并且它没有被弃用呢?你能解释一下吗。
PreparedStatement在DB服务器端分配一些资源,而simple Statement则不分配。执行单个SQL 时,它可能会导致性能差异
如文档中所述,当多次执行查询时,PreparedStatement
通常会执行普通的Statement
:
表示预编译SQL语句的对象。
SQL语句被预编译并存储在
PreparedStatement
对象中。然后可以使用此对象多次有效地执行此语句。
这就是PreparedStatement
的用途。但并不是所有的事情都与性能有关:当查询中没有变量,所有的东西都是硬编码的,并且要执行一次时,Statement
的使用就更简单了。如果您只想运行一次硬编码查询,那么创建一个具有所有潜在好处的准备好的语句是没有意义的。事实上,在这种情况下,如果您使用PreparedStatement
,则不会有太大差异,因为执行的方法是相同的,例如Statement#executeQuery()
,因为PrepareStatement
是Statement
的子类。