Встраивание базы данных Java h2 программно - PullRequest
30 голосов
/ 30 сентября 2008

В настоящее время мы используем HSQLDB в качестве встроенной базы данных, но мы ищем базу данных с меньшим объемом памяти при увеличении объема данных.

Derby / JavaDB на данный момент не вариант, поскольку он хранит свойства глобально в системных свойствах. Итак, мы подумали о h2 .

Пока мы использовали HSQLDB, мы создали серверный объект, задали параметры и запустили его. Это описано здесь (и приведено в качестве примера в классе org.hsqldb.test.TestBase).

Вопрос: можно ли это сделать аналогично базе данных h2? У вас есть примеры кода для этого? Сканируя h2-страницу, я не нашел пример.

Ответы [ 3 ]

69 голосов
/ 01 октября 2008

Да, вы можете запустить H2 во встроенном режиме. Вы просто используете драйвер JDBC и подключаетесь к встроенному URL-адресу, как это (их пример):

Эту базу данных можно использовать во встроенных в режиме или в режиме сервера. Чтобы использовать его в встроенный режим, вам необходимо:

* Add h2.jar to the classpath
* Use the JDBC driver class: org.h2.Driver
* The database URL jdbc:h2:~/test opens the database 'test' in your user home directory

Пример подключения с JDBC к встроенной базе данных H2 (адаптировано из http://www.h2database.com/javadoc/org/h2/jdbcx/JdbcDataSource.html):

import org.h2.jdbcx.JdbcDataSource;
// ...
JdbcDataSource ds = new JdbcDataSource();
ds.setURL("jdbc:h2:˜/test");
ds.setUser("sa");
ds.setPassword("sa");
Connection conn = ds.getConnection();

Если вы хотите использовать H2 только в режиме встроенной памяти / встроенной памяти, вы можете сделать это тоже. Смотрите эту ссылку для более:

Вам просто нужно использовать специальный URL в обычном коде JDBC, например "jdbc: h2: mem: db1".

24 голосов
/ 01 октября 2008

Из загрузки я вижу, что файл tutorial.html имеет это

import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();
5 голосов
/ 27 сентября 2010

Если по какой-то причине вам нужна встроенная база данных H2 в режиме сервера, вы можете сделать это вручную, используя API на http://www.h2database.com/javadoc/org/h2/tools/Server.html - или добавление; AUTO_SERVER = TRUE к URL базы данных.

...