Есть ли снижение производительности при использовании ps.setObject вместо методов, специфичных для типа, для операторов SQL?

1

У меня есть приложение, в котором я использую ps.set... для установки параметров для подготовленного оператора. Мне было трудно получить правильные запросы на сохранение объектов Java Date, в которых у меня есть как время, так и дата (и не упоминайте Календарь во всем этом беспорядке). Я обнаружил, что если я использую java.util.Date с ps.setObject, он делает правильные вещи и гораздо менее запутан. На самом деле, я обнаружил, что если я хочу установить int или String или BigDecimal, setObject сделает все правильно. Итак, мои вопросы: это плохая практика (если это так, это теоретическая плохая вещь или практическая плохая вещь), и есть ли значительный успех для этого?

Теги:

1 ответ

2

Это зависит от реализации драйвера, некоторые драйверы обертывают все свои заданные методы вокруг setObject поэтому setObject делает меньше работы. Однако я обычно ожидал, что setDate будет делать меньше работы, чем setObject.

Однако если setObject делает то, что вы хотите, используйте его. Если у вас проблемы с производительностью с базами данных, тогда замена setObject с помощью setDate будет только исправлять их, если тип был проблемой.

Например, недавно у меня возникла проблема с базой данных, которая хотела, чтобы я использовал setDate вместо setTimestamp. Это сделало запрос 200ms 250 seconds. Перестановка setObject для setDate добавит менее 1 мс к вашему запросу.

Где setDate имеет определенное преимущество над setObject. readability кода, мне нужна Date здесь, а не что-то хорошее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню