Требуется ли для операций поиска Hibernate транзакция? - PullRequest
0 голосов
/ 15 мая 2018

В общем, у меня есть идея, что запросы на выборку не требуют транзакции.Только операции Create и Update требуют транзакции.Но в последнем примере документации hibernate используется транзакция для запроса выбора.Может кто-то уточнить причину этого?Код ниже по следующей ссылке

http://docs.jboss.org/hibernate/orm/5.0/quickstart/html/

 entityManager = entityManagerFactory.createEntityManager();
    entityManager.getTransaction().begin();
    List<Event> result = entityManager.createQuery( "from Event", Event.class).getResultList();
    for ( Event event : result )
    {
        System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );

}
entityManager.getTransaction().commit();
entityManager.close();

1 Ответ

0 голосов
/ 15 мая 2018

Да, действительно, он работает без определения границ транзакции и, следовательно, на первый взгляд может показаться немного избыточным.

Вопрос в том, что может произойти, если вы не используете транзакции? В этом сообщении в блоге вы можете ознакомиться со свойствами транзакций, уровнями изоляции и «явлениями», которые могут возникнуть при (не) использовании транзакций.К таким явлениям относятся «грязное чтение», «фантомное чтение», «неповторяемое» чтение.Используя транзакции (и правильные уровни изоляции), вы можете быть уверены, что не столкнетесь с этими проблемами.

TL; DR Использование транзакций при запросах к базе данных имеет значение, если несколько человек/ процессы используют базу данных одновременно.(т.е. параллелизм). Используя границы транзакций, вы устраняете (по крайней мере, некоторые из) проблемы, возникающие при одновременном использовании базы данных.

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