Arhn - архитектура программирования

Как я могу убедиться, что hibernate.jdbc.batch_size работает?

В моих свойствах гибернации у меня есть ‹prop key="hibernate.jdbc.batch_size">30‹/prop>

В моем коде я делаю что-то похожее на

final StatelessSession sSession = sessionFactory.openStatelessSession();
try {
    sSession.connection().setAutoCommit(false);
} catch (final SQLException se) {
    // log a message
}
final Transaction tx = sSession.beginTransaction();
try{
    for ( some loop ) {
        Customer customer = new Customer(.....);
        sSession.insert(customer);
        /* Do we need to flush a stateless session? It doesn't have methods for it
        if ( i % 30 == 0 ) { //30, same as the JDBC batch size
            //flush a batch of inserts and release memory:
            sSession.flush();
            sSession.clear();
        }
        */
    } 
    //sSession.flush();// Do we need to flush a stateless session? It doesn't have methods for it
    //sSession.clear();
} finally{
    tx.commit();
    sSession.close();
}

Мой Pojo имеет следующее

@Id
//@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID", nullable = false, unique = true)
private Long id;

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

Спасибо!

19.01.2012

Ответы:


1

закомментируйте session.flush(); и посмотрите, вставлено ли что-нибудь после 20 циклов

Обновление: к обновленному вопросу

комментирование //@GeneratedValue(strategy = GenerationType.AUTO) должно вернуться к умолчанию, которое является AFAIK Identity

попробуйте использовать

@TableGenerator(name="TABLE_GEN", table="SEQUENCE_TABLE", pkColumnName="SEQ_NAME", valueColumnName="SEQ_COUNT", pkColumnValue="EMP_SEQ")
@GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
19.01.2012
  • хорошо, тогда пакетная обработка не работает. распространенный сценарий: если вы используете идентификатор или собственный генератор идентификаторов, тогда Hibernate должен немедленно перейти к базе данных при сохранении(), чтобы получить идентификатор. 19.01.2012
  • Правильно, у меня нет набора идентификаторов. Смотрите обновленный код в основном посте. 19.01.2012
  • Я должен отметить, что в настоящее время я вручную устанавливаю идентификаторы, поэтому никакой «стратегии» не требуется. Я не знаю, влияет ли это на отключение пакетной обработки или нет. 19.01.2012
  • После установки этого я «думаю», что пакетирование начинает вступать в силу. Я вижу ужасное время выполнения для 30, но такое же время выполнения, как и без пакетной обработки для 300 и для 3000. Может быть, вы знаете, как определить, какой номер партии лучше всего использовать, без случайного тестирования множества из них? Спасибо! 19.01.2012
  • я обычно беру 100, 300 или 1000, но лучше всего это профилировать 20.01.2012

  • 2

    Вы можете установить hibernate.generate_statistics=true и искать статистику по пакетам JDBC.

    04.12.2018
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..