У меня есть проект Eclipse, которая организована следующим образом:Как читать/записывать H2 встроенную БД в файл внутри вашего JAR?
MyProj/
src/
main/
java/
<All main Java source here>
config/
spring/
spring-config.xml
views/
<All JSPs here>
h2/
my-h2-db
test/
java/
config/ } etc. for test sources
Когда я завязывайте его в WAR, он упакован так:
MyProj.war
META-INF/
WEB-INF/
web.xml
lib/
classes/
spring-config.xml
my-h2-db
views/
Home.jsp
About.jsp
etc.
com/ --> root dir for all compiled Java binaries
Мне нужно написать код, который способен CRUDing базы данных H2 (и всех таблиц, пользователей и т. Д., Которые идут с ней), что для этого примера я вызвал my-h2-db
. Таким образом, приложение может работать с одним и тем же файлом БД независимо от того, тестирую ли я изнутри Eclipse или если я использую развернутую WAR.
Так я спрашиваю:
- Как получить доступ к файлу
my-h2-db
как с Eclipse, и во время выполнения (WAR) классов, так как он упакован в другом месте, чем где он живет в проекте Eclipse, ?; и
Спасибо @ Edh (+1) - однако я немного запутался здесь! Вы говорите, что как только я упакую свой проект в WAR, он не может подключиться к базе данных H2 (встроенной), которая находится внутри самой WAR? Разве это не означает, что должна быть база данных ** ** embedded **? Или ты говоришь что-то еще? Еще раз спасибо! – IAmYourFaja
Нет, встроенная база данных - это то, где код, содержащий базу данных, запускается в пределах одной JVM как клиенты jdbc. Это не означает, что файлы, используемые встроенными базами данных, хранятся в самом JAR. Для большинства встроенных баз данных они по-прежнему используют файлы в файловой системе для сохранения данных. В противном случае ни одна из данных не будет сохраняться при выполнении JVM. – EdH
Ahh, * старт * чтобы иметь смысл. Три быстрых наблюдения: (1) Когда вы говорите: «Встроенная база данных - это где код, в котором находится база данных, работает в одной JVM как клиенты jdbc ... *« Меня смущает «код, в котором размещаются базы данных» и «jdbc клиенты». Можете ли вы дать мне конкретный пример обоих этих объектов? (2) Итак, чтобы подтвердить: мне еще нужно «установить» файл базы данных H2 по некоторым URL-адресам, чтобы моя WAR могла получить к нему доступ через прогоны? (3) Как это отличается от обычной RDBMS, такой как MySQL? Еще раз спасибо за помощь! – IAmYourFaja