我在命令行Java应用程序中经常使用JPA。使用应用服务器,我可以通过<jta-data-source>jdbc/myDatabase</jta-data-source>中的persistence.xml轻松链接到外部配置。没有应用程序服务器怎么办?我可以找到有关属性<non-jta-data-source/>的一些信息。但是,如何以一种优雅的方式引用外部文件中的值(可能采用属性格式)?尽可能少的样板代码会很好。

我在这里找到了解决此问题的方法,但我认为还有一种更优雅的方法:
JPA Desktop application

最佳答案

现在,我正在使用以下解决方案:

我需要一个看起来像这样的属性文件:

javax.persistence.jdbc.url = jdbc:mysql://localhost:3306/database
javax.persistence.jdbc.user = root
javax.persistence.jdbc.password = root
javax.persistence.jdbc.driver = com.mysql.jdbc.Driver


尊重这种方案,我以后可以使用这些值而无需任何映射。然后,我可以像下面这样轻松地传递值以创建EntityManagerFactory:

try (final InputStream jpaFileInput = Files.newInputStream(propFile)) {
    final Properties properties = new Properties();
    properties.load(jpaFileInput);
    emf = Persistence.createEntityManagerFactory(PU_NAME, properties);
}

关于java - 从外部源定义JPA配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27858253/

10-10 11:41
查看更多