如何设置可移植的 persistence.xml 文件?

Posted

技术标签:

【中文标题】如何设置可移植的 persistence.xml 文件?【英文标题】:How to setup a portable persistence.xml file? 【发布时间】:2014-11-21 04:50:08 【问题描述】:

我正在构建一个使用 h2 数据库的应用程序,我的 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="taskUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>com.github.tarrsalah.jersey.todo.app.model.Task</class>
        <properties>          
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:file:/home/tarrsalah/src/github.com/tarrsalah/jaxrs-todo-app/target/todo"/>
            <property name="javax.persistence.jdbc.user" value=""/>
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="javax.persistence.jdbc.password" value=""/>
        </properties>
    </persistence-unit>
</persistence>

如您所见,我在 javax.persistence.jdbc.url 属性中有一个指向本地 h2 数据库的硬链接,我想在 github 上分享我的代码。

如何在不更改 persistence.xml 配置文件的情况下使我的代码的克隆版本正常工作?

PS:我正在使用flyway进行数据库迁移)

【问题讨论】:

【参考方案1】:

为了与他人共享此代码,您可以尝试使用内存中的 h2 数据库

<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=1000"/>

【讨论】:

flyway迁移怎么样? AFAIK flyway 迁移在 h2 内存数据库中工作。看这里***.com/questions/21019874/… @Shailendar 使用 maven flyway 插件迁移成功,但似乎 eclipseLink 找不到它(我使用的是相同的 URL)。 我必须使用 java API 进行迁移,感谢建议使用内存选项。

以上是关于如何设置可移植的 persistence.xml 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Wildfly 部署时设置 hibernate.hbm2ddl.auto 不使用 persistence.xml

如何在没有 persistence.xml 的情况下配置 Spring?

DDL 生成和常规 persistence.xml 设置 (OpenJPA)

persistence.xml文件的妙处

JAVA JPA persistence.xml - 如何在我的应用程序中使用之前测试连接有效性

如何通过 Persistence.generateSchema() 生成 DDL?