|
|
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
Имею такой код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Результат: в базе ничего не сохраняется, однако запрос один Message находит. Хотя в базе его нет. Как так? QueryCache у меня отключен. Значит, запрос идет напрямую в базу. Однако там ничего нет. Я продебажил запрос до PreparedStatement.execute() и вижу что да, возвращает объект на этом уровне. Но в базе-то его нет. Загадка. Кроме того, хотелось бы уточнить: получается что Session.save никак не может сохранить объект в базу, если нет транзакции. Не помогает даже flush(). Это так, или у меня с настройками что-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 08:05 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
1.1.7. Loading and storing objects : Код: sql 1. 2. 3. 4. 5. 6. 7. Ваши изменения кода сделаны на основании чего-то или просто потому, что "так проще"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 08:17 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, я не то чтобы пишу что-то, а просто хочу лучше понять как Hibernate устроен изнутри. Да, если добавить транзакцию то все станет понятно. Однако мне интересно без нее: как оно может достать из базы то, чего нет?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 08:23 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
Чисто технически, соединение с базой может быть создано в режиме "автоматическая фиксация" (autocommit). Только это не выключает транзакции, это всего лишь означает, что после каждой вставки/обновления/удаления драйвер автоматически добавит commit. Единственное, что может быть: 1. Соединение создаётся без автофиксации; 2. Транзакция автоматически начнётся при выполнении первого оператора; 3. Все остальные операторы будут выполнены в рамках этой же неявной транзакции; 4. Выборка вернёт вставленную запись, т.к. выполняется в одной транзакции со вставкой; 5. Завершение сессии завершит транзакцию, а это, в свою очередь, отменит все изменения (неявный rollback), т.к. никто не позаботился зафиксировать изменения. Исключениями являются автономные транзакции, которые можно фиксировать вне зависимости от объемлющей транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 08:42 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
Dymytryпросто хочу лучше понять как Hibernate устроен изнутриORM-ы, в общем-то, придуманы для того, чтобы не требовалось знать внутреннего устройства А для ковыряния в потрохах, вероятно, разумнее будет выбрать библиотеку попроще и такую, где вы хорошо знаете то, что эта библиотека "обёртывает". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 08:49 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, спасибо за версию! Что такое автофиксация? Я всегда читаю на английском, это свойство autoCommit в jdbc.connection? Похоже что вы правы: мне удалось повторить это без хибернейта. Если написать INSERT через чистый jdbc, затем сделать SELECT, а затем закрыть connection без коммита - тот SELECT все равно покажет несуществующий после закрытия connection ряд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2014, 06:09 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
DymytryЧто такое автофиксация? Я всегда читаю на английском, это свойство autoCommit в jdbc.connection?Да, именно это свойство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2014, 08:59 |
|
||
|
Hibernate: в базу не сохраняет, однако запросом достает.
|
|||
|---|---|---|---|
|
#18+
Dymytry Если написать INSERT через чистый jdbc, затем сделать SELECT, а затем закрыть connection без коммита - тот SELECT все равно покажет несуществующий после закрытия connection ряд. Уровень изоляции READ_COMMITED. Изменения в бд без коммита видны только в этой сессии, после коммита зафиксированы в бд и видны всем остальным сессиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2014, 10:20 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=167&tid=2126887]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 428ms |

| 0 / 0 |
