Как я могу проверить, работает ли hibernate.jdbc.batch_size? - PullRequest
2 голосов
/ 19 января 2012

В моих спящих свойствах у меня есть30

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

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;

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 января 2012

закомментируйте 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")
0 голосов
/ 04 декабря 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...