2014-11-21 3 views
2

В настоящее время я тестирую H2 DB в режиме памяти. настроить соединение пов базе данных памяти h2, как долго поддерживать соединение открытым?

h2Con = DriverManager.getConnection( 
       "jdbc:h2:mem:db1", "SA", ""); 

Хочу несколько импорта с DbUnit и установить соединение dbUnits дБ

IDataBaseConnection dBUnitConnection = new DatabaseConnection(h2con); 

и импорт, который я хочу, чтобы запросить позже

Так мой вопрос в режиме памяти, когда я могу закрыть соединение? Normaly я сделать что-то вроде этого

try{ 
    //some sql query 
}catch{ 
    //error handling 
}finally{ 
    if(connection!=null) 
     connection.close() 
} 

Но в памяти, если соединение закрыто я потерять данные? Так должно ли оно оставаться открытым, пока я не закончу свою программу?

ответ

7

С Н2 documentation:

По умолчанию закрытия последнего подключения к базе данных закрывает базу данных . Для базы данных в памяти это означает, что контент потерян. Чтобы открыть базу данных, добавьте DB_CLOSE_DELAY = -1 в URL-адрес базы данных. Чтобы сохранить содержимое базы данных в памяти, пока виртуальный компьютер жив, используйте jdbc: h2: mem: test; DB_CLOSE_DELAY = -1.

Таким образом, вы можете сконфигурировать H2, чтобы сохранить неиспользуемую базу данных в памяти из-за срока службы вашей JVM, а затем вы можете подключиться и отключиться от нее по своему усмотрению.

0

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

Строка url = "jdbc: h2: ~/test; DB_CLOSE_ON_EXIT = FALSE";

Смежные вопросы