我有一个Eclipse项目,其组织如下:
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
我需要编写能够CRUD一个H2数据库的代码(以及随之而来的所有表,用户等),本例中我称之为my-h2-db
。这样,无论我是从Eclipse内部进行测试,还是实际使用部署的WAR,app都可以使用相同的DB文件。
所以我问:
my-h2-db
文件,因为它打包在与Eclipse项目中的位置不同的位置?和答案 0 :(得分:3)
我认为你不想在你的WAR应用程序中打包H2文件。它无法在WAR中使用它们。
您在版本控制中想要的是用于构建数据库实体的DDL(并在必要时预先填充)。然后,在开发或生产环境中,使用这些脚本来创建/更新数据库。
Web应用程序中的内容只是用于定位嵌入式数据库的JDBC URL(指定数据库的文件位置)。如您所知,这将根据开发或生产环境而有所不同。
我一直在使用LiquiBase作为管理数据库创建/升级的一种方式,而且它非常易于使用。
但是,将数据库作为开发的一部分创建然后将这些文件嵌入WAR中以便直接使用它的想法将无效。没有保存这些文件的概念,因此没有数据会持续存在。