2016-08-18 3 views
0

Я только начал изучать 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. Спасибо Апостолос.

ответ

0

Вы можете установить режим автокоммит в спящем режиме через hibernate.connection.autocommit собственности

пожалуйста, прочитайте the configuration documentation

на основе обновленного вопроса, вы не используете autocommit, так как вы не определили в autocommit в вашей конфигурации. Вы также делаете select query, так что вы не увидите, что-то происходит в вашем db. внесите некоторые изменения, сохраните их, а затем снова проверьте. Вам необходимо зафиксировать транзакцию, чтобы сохранить изменения, или определите autocommit = true в вашей собственности.

+0

Свойство 'hibernate.connection.autocommit', если оно не определено, равно true (из того, что я прочитал). На данный момент я не могу этого изменить. Я пытаюсь понять, используется ли код, который я написал, с помощью autocommit. Если это так, мне нужно разграничить мой код, чтобы обработать транзакцию явно, поскольку я не хочу использовать autocommit. – Hodglem

+0

по умолчанию установлено значение false, и не рекомендуется устанавливать его в true. чтобы убедиться, что автокоммит включен, выполните действие (вставить/обновить/удалить), а затем просмотреть результаты. в этом примере вы просто читаете строку. Я уверен, что при запуске hibernate он регистрирует, какое значение autocommit используется. – Apostolos

+0

, так как вы обновили свой вопрос, вы не используете autocommit, так как вы не указали автосообщение в своей конфигурации. вы также делаете запрос выбора, поэтому вы не увидите, произойдет ли в вашем db событие sth. внесите некоторые изменения, сохраните их, а затем снова проверьте. – Apostolos

Смежные вопросы