Java 对于SQL准备的语句,使用ps.setObject而不是特定于类型的方法是否会影响性能?
我有一个应用程序,我正在使用ps.set。。。为准备好的语句设置参数。我很难获得存储java日期对象的正确调用,因为我既有时间又有日期(在这整个混乱中,更不用说日历了)。我发现,如果我将java.util.Date与ps.setObject一起使用,它做的事情是正确的,并且不会太令人困惑。事实上,我发现如果我想设置int、String或BigDecimal,setObject也会为它们做正确的事情。因此,我的问题是:这是一种不好的做法(如果是这样的话,这是理论上的坏事还是实际上的坏事)并且这样做会对性能造成重大影响吗?这取决于驱动程序的实现,一些驱动程序将其所有的设置方法都打包在Java 对于SQL准备的语句,使用ps.setObject而不是特定于类型的方法是否会影响性能?,java,sql,Java,Sql,我有一个应用程序,我正在使用ps.set。。。为准备好的语句设置参数。我很难获得存储java日期对象的正确调用,因为我既有时间又有日期(在这整个混乱中,更不用说日历了)。我发现,如果我将java.util.Date与ps.setObject一起使用,它做的事情是正确的,并且不会太令人困惑。事实上,我发现如果我想设置int、String或BigDecimal,setObject也会为它们做正确的事情。因此,我的问题是:这是一种不好的做法(如果是这样的话,这是理论上的坏事还是实际上的坏事)并且这样做
setObject
上,因此setObject
做的工作更少。然而,我通常期望setDate
比setObject
做的工作更少
但是,如果setObject
正在执行您想要的操作,则使用它。如果数据库存在性能问题,则仅当类型存在问题时,将setObject
与setDate
交换才能修复这些问题
例如,最近我遇到了一个问题,数据库希望我使用setDate而不是setTimestamp。这使得200ms
查询需要250秒才能完成。将setObject
替换为setDate
将在查询中添加不到1ms的时间
其中setDate
比setObject
有一定的好处。是可读性
代码在这里说我需要一个日期
,而不是说什么都好