У меня есть приложение, в котором я использую ps.set... для установки параметров для подготовленного оператора. Мне было трудно получить правильные запросы на сохранение объектов Java Date, в которых у меня есть как время, так и дата (и не упоминайте Календарь во всем этом беспорядке). Я обнаружил, что если я использую java.util.Date с ps.setObject, он делает правильные вещи и гораздо менее запутан. На самом деле, я обнаружил, что если я хочу установить int или String или BigDecimal, setObject сделает все правильно. Итак, мои вопросы: это плохая практика (если это так, это теоретическая плохая вещь или практическая плохая вещь), и есть ли значительный успех для этого?
Это зависит от реализации драйвера, некоторые драйверы обертывают все свои заданные методы вокруг setObject
поэтому setObject
делает меньше работы. Однако я обычно ожидал, что setDate
будет делать меньше работы, чем setObject
.
Однако если setObject
делает то, что вы хотите, используйте его. Если у вас проблемы с производительностью с базами данных, тогда замена setObject
с помощью setDate
будет только исправлять их, если тип был проблемой.
Например, недавно у меня возникла проблема с базой данных, которая хотела, чтобы я использовал setDate вместо setTimestamp. Это сделало запрос 200ms
250 seconds
. Перестановка setObject
для setDate
добавит менее 1 мс к вашему запросу.
Где setDate
имеет определенное преимущество над setObject
. readability
кода, мне нужна Date
здесь, а не что-то хорошее.