Ответ 1
Вы можете сделать это.
например.
preparedStatement = connection.prepareStatement(SQL_INSERT);
SqlUtil.setValues(preparedStatement, user.getName(), user.getPassword(), user.getAge());
с
public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException {
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i + 1, values[i]);
}
}
Драйвер JDBC выполнит проверку типа. Единственным недостатком может быть (незначительная) накладная работа, но это незначительно по сравнению с лучшим поддерживаемым кодом, в котором вы закончили. Кроме того, большинство инфраструктур ORM, таких как Hibernate/JPA, также используют это глубоко под обложками.