что-то смешное со встроенным hsql

Мне просто любопытно кое-что. Я использую hsql в своем проекте (конечно, встроенный). В какой-то момент я почувствовал необходимость визуализировать то, что генерирует спящий режим. Я взял бесплатную копию dbvisualizer. вот hsqljdbc.properties

jdbc.url=jdbc:hsqldb:file:mydb;create=true
hibernate hbm2ddl.auto=create

я скачал hsql 1.8.0_10. я выполнил все необходимые процедуры. Я мог подключиться и увидеть таблицы, но после этого изменения, внесенные в таблицу, похоже, не хотят отображаться. Затем я попытался удалить базу данных, сгенерировав новую, но все же. Вы получили любая идея в этом?

Я обычно Дерби, но в последнее время я понял, что это не так точно в отношении управления отношениями. Я использую mysql на данный момент, что не очень хорошо для разработки, поэтому я хочу знать, забыл ли я что-то сделать или это просто должно вести себя так. Спасибо, что прочитали это


person black sensei    schedule 12.11.2009    source источник
comment
У меня было такое же поведение со встроенной HSQLDB на сервере JBoss 5.0. EJB3 работал без ошибок, но БД всегда была пуста. Перешел на Дерби, все работает.   -  person lemotdit    schedule 12.11.2009
comment
mmmh man.unique on field, похоже, не работает для меня в Дерби. Это одна из причин, по которой я переключаю его на hsql. Кроме того, его синтаксис похож на mysql.   -  person black sensei    schedule 12.11.2009
comment
Итак... мой ответ сработал для вас? Рассмотрите возможность предоставления отзыва, как я должен узнать, нужно ли мне улучшить свой ответ. Или, если вы сами нашли жизнеспособное решение, пожалуйста, опубликуйте его.   -  person jitter    schedule 03.12.2009
comment
извините за поздний ответ. Я использовал show_sql=true с самого начала, но вы знаете, что просмотр всех этих показаний, особенно когда вы находитесь под давлением, немного утомителен. Это помогает визуально проверить наличие очевидных ошибок или проблем, прежде чем копать подробнее об этом, прочитав операторы hibernate. по крайней мере, это то, во что я верю, или я должен сказать, что это сработает для меня. спасибо за ответ   -  person black sensei    schedule 07.12.2009


Ответы (3)


Использование HSQLDB для разработки и тестирования подробно обсуждается в новом Руководстве.

http://hsqldb.org/doc/2.0/guide/deployment-chapt.html#dec_app_dev_testing

HSQLDB по умолчанию использует механизм задержки записи, и изменения сбрасываются на диск через 10 секунд в версии 1.8.x или 0,5 секунды в версии 2.0 и выше.

Вы можете принудительно отключить базу данных и записать все изменения, когда последнее соединение будет закрыто с помощью этого URL-адреса:

jdbc.url=jdbc:hsqldb:file:mydb;shutdown=true

В HSQLDB 2.x вы можете использовать свойство write_delay, чтобы заставить каждую фиксацию немедленно записывать на диск:

jdbc.url=jdbc:hsqldb:file:mydb;hsqldb.write_delay=false

Версия 2.2.9 и более поздние версии сохраняют последние изменения при закрытии последнего соединения, поэтому может не потребоваться использовать hsqldb.write_delay=false для тестов, закрывающих соединения.

В HSQLDB 1.8 вам нужно запустить команду SQL в начале, чтобы сделать это:

УСТАНОВИТЬ WRITE_DELAY FALSE

person fredt    schedule 18.09.2010
comment
спасибо приятель теперь все понятно. в следующий раз я буду использовать версию 2.0 и посмотреть, как она идет - person black sensei; 22.10.2012
comment
Последняя версия на данный момент 2.2.9. Всегда пробуйте последнюю версию. - person fredt; 22.10.2012
comment
Кто-нибудь знает, имеет ли значение установка задержки записи для MEMORY TABLES? или только для CACHED ? - person ycomp; 08.06.2016
comment
Задержка записи предназначена для записи изменений в файл .log и применяется как к таблицам MEMORY, так и к таблицам CACHED. - person fredt; 08.06.2016

По умолчанию HSQLDB хранит содержимое таблицы в памяти до закрытия базы данных: http://www.hsqldb.org/doc/guide/ch05.html#N10DD6

В зависимости от ваших потребностей (например, при работе в среде разработки) этого может быть достаточно. Однако для производства я бы предпочел использовать СУБД, которая записывает каждое изменение на диск в нескольких местах (что для меня означает Oracle, хотя MySQL, вероятно, работает так же хорошо).

person kdgregory    schedule 12.11.2009

Почему бы вам просто не установить для свойства show_sql значение true, если вы хотите увидеть, что делает спящий режим?

person jitter    schedule 15.11.2009