在Java应用程序中,数据库连接是最耗费资源的一部分。当应用程序由多个并发用户访问时,如果连接池不恰当,则性能问题可能会很糟糕。使用PrepareCall可以帮助解决这个问题。
PrepareCall有一点针对性的对待SQL语句。当你使用它来执行一个SQL语句时,首先,数据库会把这段SQL文本编译成机器语言,然后缓存它,以便下一次它被调用时可以更快地执行。PrepareCall的另一个优点是使你可以参数化SQL查询,这样可以避免SQL注入攻击。
对PrepareCall的调用方式与其他PreparedStatement调用方式非常相似,唯一不同的是,您需要调用Connection.prepareCall()方法代替Connection.prepareStatement()方法来获取PrepareCall。
在大多数情况下,使用PrepareCall而不是Statement可以极大地提高JDBC应用程序的性能。然而,请注意,如果应用程序不从PrepareCall中受益,那么使用PrepareCall可能会导致性能下降,因此请始终测量和分析性能,以确定哪种JDBC调用是最佳的。