【问题标题】:db.properties vs persistence.xml which one is better?db.properties 与 persistence.xml 哪个更好?
【发布时间】:2013-09-10 06:54:24
【问题描述】:

最近我开始了一个maven项目来构建一个用于集成的应用程序

春天,JPA,JSF

但在自动生成的文件夹结构中,我可以看到一个名为

的文件

db.properties

我也有一个

persistence.xml

现在我的问题是可以在这些文件中的任何一个中定义数据库连接,谁能告诉我 1. 哪种方式更好,为什么? 2. 为什么我已经有了persistence.xml,却自动生成了db.properties文件?

【问题讨论】:

  • 你是用什么生成的?
  • 我使用了包含spring、hibernate、jsf的maven原型
  • 确切的原型。我问,因为我使用过这些技术,而 db.properties 并没有敲响警钟,所以我很好奇复制这个并看看那个文件是关于什么的 :)

标签: java xml spring maven jpa


【解决方案1】:

从您提到 JSF 的事实来看,我假设您正在构建一个 Web 应用程序以部署到应用程序服务器。我还警告这个问题,因为我不知道 db.properties 或它来自哪里。

部署到应用程序服务器时,最好在容器中配置数据库连接并通过 JNDI 将它们公开给应用程序。这允许容器管理连接池和凭证,并将这些信息保留在您的 WAR/EAR 文件之外。它还确保您的 WAR/EAR 文件与特定的数据库实例无关,因此无需修改即可部署到任何环境中的容器中。

因此,我建议不要在persistence.xml 中配置您的数据源。

另请参阅Difference between configuring data source in persistence.xml and in spring configuration files,这是一个类似的问题 - 那里接受的答案更详细地表达了解决方案。

【讨论】:

    【解决方案2】:

    db.properties 文件类似于messages.properties,用于定义键值对。之后我们将使用表达式语言中的键。所以配置只会在

    persistence.xml 或 dataSource.xml

    无论哪个是首选,但我们将以表达式语言的形式从 db.properties 获取值。

     driverClassName=com.mysql.jdbc.Driver
    

    这是您的 db.properties 中的一个条目。您将在 persistence.xml 中使用它,如下所示。

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driverClassName}" />
    

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 2013-11-28
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多