что-то смешное со встроенным hsql - PullRequest
2 голосов
/ 12 ноября 2009

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

jdbc.url = JDBC: HSQLDB: файл MYDB, создать = истинный
hibernate hbm2ddl.auto = создать

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

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

Ответы [ 3 ]

8 голосов
/ 18 сентября 2010

Использование 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 в начале, чтобы сделать это:

SET WRITE_DELAY FALSE

1 голос
/ 15 ноября 2009

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

1 голос
/ 13 ноября 2009

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

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

...