Вы можете использовать Collections.nCopies
для создания коллекции заполнителей и присоединиться к ним с помощью String.join
:
List<String> params = getParams();
String placeHolders = String.join(",", Collections.nCopies(params.size(), "?"));
String sql = "select * from your_table where some_column in (" + placeHolders + ")";
try ( Connection connection = getConnection();
PreparedStatement ps = connection.prepareStatement(sql)) {
int i = 1;
for (String param : params) {
ps.setString(i++, param);
}
/*
* Execute query/do stuff
*/
}
Свойство конфигурации называют hibernate.hbm2ddl.auto
В нашей среде разработки, которую мы устанавливаем hibernate.hbm2ddl.auto=create-drop
, чтобы отбросить и создать чистую базу данных каждый раз, когда мы развертываемся, так, чтобы наша база данных была в известном состоянии.
В теории, можно установить hibernate.hbm2ddl.auto=update
для обновления базы данных с изменениями в модели, но я не положил бы этому на производственной базе данных. Более ранняя версия документации сказала, что это было экспериментально, по крайней мере; я не знаю текущего статуса.
Поэтому для нашей производственной базы данных, не устанавливайте hibernate.hbm2ddl.auto
- значение по умолчанию не должно вносить изменения базы данных. Вместо этого мы вручную создаем сценарий обновления DDL SQL, который применяет изменения от одной версии до следующего.
Я использовал бы liquibase для обновления Вашего дб. функция обновления схемы hibernate действительно только в порядке. для разработчика, в то время как они разрабатывают новые возможности. В производственной ситуации обновление дб должно быть обработано более тщательно.
hibernate.hbm2ddl.auto Автоматически проверяет или экспортирует DDL схемы в базу данных при создании SessionFactory. С помощью create-drop схема базы данных будет удалена при явном закрытии SessionFactory.
например, validate | обновление | создать | create-drop
Итак, список возможных вариантов:
Эти параметры кажутся инструментами разработчика и не облегчать базы данных производственного уровня, вы можете взглянуть на следующий вопрос; Hibernate: hbm2ddl.auto = update in production?