更改 jar 中数据库(SQLite)的位置
Changing the location of the database(SQLite) in a jar
当我使用我的项目 (Maven) 和 运行 它的依赖项创建一个 jar 时,数据库(带有 Hibernate 和 SQLite Dialect For Hibernate 的 SQLite)存储在与 jar 相同的位置。如何更改数据库的位置?
来自pom.xml
的片段
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>Starter</mainClass>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
来自 hibernate.cfg.xml
的片段
<hibernate-configuration>
<session-factory>
<!--SQLite settings-->
<property name="connection.driver_class">org.sqlite.JDBC</property>
<property name="dialect">org.hibernate.dialect.SQLiteDialect</property>
<property name="connection.url">jdbc:sqlite:Example.sqlite</property>
<property name="connection.username"></property>
<property name="connection.password"></property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
您的 hibernate.cfg.xml 中的连接 url 属性 实际上指向数据库文件。由于您没有指定任何路径,当前工作目录将用于 store/access 该文件。
您的工作目录与保存所有 jars 的目录相同,这更像是一个巧合。
就是说,只需放置一个不同的连接 url 即可。如果您想在运行时确定,也许不要使用硬编码的 hibernate.cfg.xml 文件。您肯定可以通过代码配置休眠会话工厂。
当我使用我的项目 (Maven) 和 运行 它的依赖项创建一个 jar 时,数据库(带有 Hibernate 和 SQLite Dialect For Hibernate 的 SQLite)存储在与 jar 相同的位置。如何更改数据库的位置?
来自pom.xml
的片段 <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>Starter</mainClass>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
来自 hibernate.cfg.xml
的片段<hibernate-configuration>
<session-factory>
<!--SQLite settings-->
<property name="connection.driver_class">org.sqlite.JDBC</property>
<property name="dialect">org.hibernate.dialect.SQLiteDialect</property>
<property name="connection.url">jdbc:sqlite:Example.sqlite</property>
<property name="connection.username"></property>
<property name="connection.password"></property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
您的 hibernate.cfg.xml 中的连接 url 属性 实际上指向数据库文件。由于您没有指定任何路径,当前工作目录将用于 store/access 该文件。
您的工作目录与保存所有 jars 的目录相同,这更像是一个巧合。
就是说,只需放置一个不同的连接 url 即可。如果您想在运行时确定,也许不要使用硬编码的 hibernate.cfg.xml 文件。您肯定可以通过代码配置休眠会话工厂。