powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate Session насколько правильно?
10 сообщений из 35, страница 2 из 2
Hibernate Session насколько правильно?
    #38196155
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надеюсь в тему топика спрошу :-)
В инете часто вижу примеры вида:
Код: java
1.
2.
3.
4.
5.
6.
7.
EntityTransaction entr=em.getTransaction();
entr.begin();
Query query=em.createQuery("SELECT st FROM Student st WHERE st.sroll < :roll");
query.setParameter("roll", 102);
List stList=query.getResultList();
...
entr.commit();


С точки зрения БД, коммитить после селекта достаточно бредово, и думал, что это ошибка. Вот ща задумался, может в этом есть сакральный смысл. Есть ли?)
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196161
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukkuНадеюсь в тему топика спрошу :-)
В инете часто вижу примеры вида:
Код: java
1.
2.
3.
4.
5.
6.
7.
EntityTransaction entr=em.getTransaction();
entr.begin();
Query query=em.createQuery("SELECT st FROM Student st WHERE st.sroll < :roll");
query.setParameter("roll", 102);
List stList=query.getResultList();
...
entr.commit();


С точки зрения БД, коммитить после селекта достаточно бредово, и думал, что это ошибка. Вот ща задумался, может в этом есть сакральный смысл. Есть ли?)
Из того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит.
Из Вики SQL is inherently transactional, and a transaction is automatically started when another ends. Some databases extend SQL and implement a START TRANSACTION statement, but while seemingly signifying the start of the transaction it merely deactivates autocommit .
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196165
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. коммит в любом случае происходит, просто БД его сделает самостоятельно (autocommit on).
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196173
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukkuС точки зрения БД, коммитить после селекта достаточно бредово, и думал, что это ошибка. Вот ща задумался, может в этом есть сакральный смысл. Есть ли?)
Зависит от СУБД. SELECT с уровнем изоляции SERIALIZABLE может вполне себе до коммита сделать все используемые в нем таблицы read-only.
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196176
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukkuНадеюсь в тему топика спрошу :-)
С точки зрения БД, коммитить после селекта достаточно бредово
в данном примере да. но только в смысле глупой работы. декларативные транзакции для того и придумали, чтоб не писать такой бездумный код. но по сути они делают тоже самое. ничего не происходит вне транзакции. значит ее надо где-то стартовать и комитить/откатить

rdmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит.
нет, данные уже получены. транзакция стартовала и мы уже видим все, что ей доступно исходя из уровня изоляции. закрыть ее нужно чтобы она не осталась висеть в базе (при определенных обстоятельствах конечно).
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196180
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит.

Вы неправильно поняли.
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196181
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashardmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит.
нет, данные уже получены. транзакция стартовала и мы уже видим все, что ей доступно исходя из уровня изоляции. закрыть ее нужно чтобы она не осталась висеть в базе (при определенных обстоятельствах конечно).
Я чуть чуть наврал)
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196183
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркrdmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит.

Вы неправильно поняли.
Перепутал чуть) Данные получены, а коммит для снятия возможных блокировок, как в вашем примере с уровнем изоляции.
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196601
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
rdm,

У Вас и с транзакциями в голове бедлам порядочный... Тут забыли про производительность упомянуть - как правило N операций в одной транзакции обходятся гораздо дешевле
...
Рейтинг: 0 / 0
Hibernate Session насколько правильно?
    #38196603
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGArdm,

У Вас и с транзакциями в голове бедлам порядочный... Тут забыли про производительность упомянуть - как правило N операций в одной транзакции обходятся гораздо дешевле
Да я забывчивый) По десять раз в одном и том же разбираюсь)
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate Session насколько правильно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]