Я только начал изучать Hibernate, но на основании чтения, которое я сделал в руководстве, приведенный ниже код использует автоматическую фиксацию, поскольку commit() явно не вызван. Все примеры, которые я нашел here, показывают использование commit(). Поскольку я просто учился, я хотел получить подтверждение от сообщества, что я думал правильно.Пример использования Hibernate AutoCommit в Java
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
session.clear();
entityReturned = (MultipleKeyTable) session.get(MultipleKeyTable.class, entityId);
session.close();
Редактировать Я хотел бы упомянуть, что hibernate.connection.autocommit
не определен в конфигурации, и я считаю, что по умолчанию установлено значение верно.
Редактировать Я был не прав hibernate.connection.autocommit
По умолчанию установлено значение false. Спасибо Апостолос.
Свойство 'hibernate.connection.autocommit', если оно не определено, равно true (из того, что я прочитал). На данный момент я не могу этого изменить. Я пытаюсь понять, используется ли код, который я написал, с помощью autocommit. Если это так, мне нужно разграничить мой код, чтобы обработать транзакцию явно, поскольку я не хочу использовать autocommit. – Hodglem
по умолчанию установлено значение false, и не рекомендуется устанавливать его в true. чтобы убедиться, что автокоммит включен, выполните действие (вставить/обновить/удалить), а затем просмотреть результаты. в этом примере вы просто читаете строку. Я уверен, что при запуске hibernate он регистрирует, какое значение autocommit используется. – Apostolos
, так как вы обновили свой вопрос, вы не используете autocommit, так как вы не указали автосообщение в своей конфигурации. вы также делаете запрос выбора, поэтому вы не увидите, произойдет ли в вашем db событие sth. внесите некоторые изменения, сохраните их, а затем снова проверьте. – Apostolos