Q1: Что происходит при вызове store (..) с коллекцией из 10 предметов? Будет ли 10 х 1 транзакций или только одна?
Это характерно для транзакций Spring, но что касается Hibernate, если вы используете один сеанс и одну «транзакцию», она будет ожидать «сброса» или «фиксации» для фактического выполнения операций. Итак, одна транзакция.
Q2: Что происходит при вызове store (..) с коллекцией из 1 предметов? Будет ли оно немедленно записано в резервное хранилище независимо от свойства batch_size?
Не сразу. То же, что и в предыдущем ответе, применимо и здесь: если вы явно не попросите «сброс», Hibernate выполнит действие на этапе фиксации.
В3. Что классифицируется как генератор идентификаторов с использованием аннотаций @Id и @GeneratedValue (стратегии = GenerationType.AUTO)?
Все, что Hibernate не может предсказать в качестве идентификатора. Например, идентичность (например, последовательности, но для баз данных T-SQL), автоинкремент, последовательности ... Причина проста: Hibernate не знает, каким будет сгенерированный идентификатор для каждого из пакетных объектов, поэтому состояние объекта после вставка будет отличаться от состояния до. Hibernate обрабатывает это в обычных сценариях, вызывая метод JDBC для «getGeneratedKeys», что позволяет ему синхронизировать данные из базы данных с данными в своем сеансе, но это невозможно сделать для пакетов.
Если Hibernate знает, каким будет идентификатор для сущностей (то есть: назначен, hilo, uuid, ...), он может безопасно выполнить пакетное выполнение.