Как выполнить пакетный запрос SQL, используя сеанс Hibernate - PullRequest
2 голосов
/ 28 января 2020

Я использую приведенный ниже код для обновления:

private void updateAvatarPath(Integer param1, String param2, String param3, boolean param4){

        Transaction avatarUpdatePathTransaction = session.beginTransaction();


        String updateQuery = "query goes here with param";

        Query query = session.createSQLQuery(updateQuery);
        query.executeUpdate();

        avatarUpdatePathTransaction.commit();
        session.flush();
    }

Эта функция вызывается из al oop. Таким образом, для обновления требуется время, поскольку для каждого l oop оно попадает в БД. Вместо того, чтобы каждый раз нажимать на БД, для повышения производительности я планирую выполнять его партиями. Но понятия не имею, как это сделать.

session.doWork() - это одно из решений, которое я получил. Я хочу знать любой другой доступный вариант, чтобы сделать это.

1 Ответ

2 голосов
/ 28 января 2020

Вы должны двигаться Transaction avatarUpdatePathTransaction = session.beginTransaction(); до начала ваших l oop и avatarUpdatePathTransaction.commit(); после окончания вашего l oop.

Рекомендуется использовать один сеанс на "единицу работа ", в вашем случае это, кажется, изменяет несколько сущностей в одном сеансе / транзакции.

session.flush(); не является необходимым, я думаю, что фиксация транзакции должна грипп sh сеанс

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