更改 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 文件。您肯定可以通过代码配置休眠会话工厂。