|
|
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
Надеюсь в тему топика спрошу :-) В инете часто вижу примеры вида: Код: java 1. 2. 3. 4. 5. 6. 7. С точки зрения БД, коммитить после селекта достаточно бредово, и думал, что это ошибка. Вот ща задумался, может в этом есть сакральный смысл. Есть ли?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:27:02 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
ukkuНадеюсь в тему топика спрошу :-) В инете часто вижу примеры вида: Код: java 1. 2. 3. 4. 5. 6. 7. С точки зрения БД, коммитить после селекта достаточно бредово, и думал, что это ошибка. Вот ща задумался, может в этом есть сакральный смысл. Есть ли?) Из того что я понял, строчка 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 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:32:51 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
Т.е. коммит в любом случае происходит, просто БД его сделает самостоятельно (autocommit on). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:35:42 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
ukkuС точки зрения БД, коммитить после селекта достаточно бредово, и думал, что это ошибка. Вот ща задумался, может в этом есть сакральный смысл. Есть ли?) Зависит от СУБД. SELECT с уровнем изоляции SERIALIZABLE может вполне себе до коммита сделать все используемые в нем таблицы read-only. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:43:05 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
ukkuНадеюсь в тему топика спрошу :-) С точки зрения БД, коммитить после селекта достаточно бредово в данном примере да. но только в смысле глупой работы. декларативные транзакции для того и придумали, чтоб не писать такой бездумный код. но по сути они делают тоже самое. ничего не происходит вне транзакции. значит ее надо где-то стартовать и комитить/откатить rdmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит. нет, данные уже получены. транзакция стартовала и мы уже видим все, что ей доступно исходя из уровня изоляции. закрыть ее нужно чтобы она не осталась висеть в базе (при определенных обстоятельствах конечно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:44:29 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
rdmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит. Вы неправильно поняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:46:04 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
chpashardmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит. нет, данные уже получены. транзакция стартовала и мы уже видим все, что ей доступно исходя из уровня изоляции. закрыть ее нужно чтобы она не осталась висеть в базе (при определенных обстоятельствах конечно). Я чуть чуть наврал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:46:53 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
Локшин МаркrdmИз того что я понял, строчка em.getTransaction(); отключает autocommit на стороне БД и чтобы получить данные надо сделать коммит. Вы неправильно поняли. Перепутал чуть) Данные получены, а коммит для снятия возможных блокировок, как в вашем примере с уровнем изоляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2013, 23:47:55 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
rdm, У Вас и с транзакциями в голове бедлам порядочный... Тут забыли про производительность упомянуть - как правило N операций в одной транзакции обходятся гораздо дешевле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2013, 19:07:32 |
|
||
|
Hibernate Session насколько правильно?
|
|||
|---|---|---|---|
|
#18+
WGArdm, У Вас и с транзакциями в голове бедлам порядочный... Тут забыли про производительность упомянуть - как правило N операций в одной транзакции обходятся гораздо дешевле Да я забывчивый) По десять раз в одном и том же разбираюсь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2013, 19:12:37 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38196173&tid=2129711]: |
0ms |
get settings: |
19ms |
get forum list: |
27ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
57ms |
get topic data: |
22ms |
get forum data: |
5ms |
get page messages: |
79ms |
get tp. blocked users: |
3ms |
| others: | 336ms |
| total: | 562ms |

| 0 / 0 |
