【问题标题】:hibernate.cfg.xml - Set parameters from a properties filehibernate.cfg.xml - 从属性文件中设置参数
【发布时间】:2015-05-21 09:00:07
【问题描述】:

我有这个文件 hibernate.cfg.xml 用于在 sturtup 配置休眠。

<property name="hibernate.connection.username">dbUser</property>
<property name="hibernate.connection.password">1234</property>

我有一个名为 config.properties 的属性文件,其中包含应用程序中使用的所有其他配置。

如何从属性文件 (config.properties) 中设置 "hibernate.connection.username" 参数,以便我只有一个文件可以编辑?

【问题讨论】:

  • @NeerajJain 在使用 IoC 和 Spring 等依赖注入框架时有效(如该链接所示)。如果你不使用它,你可以多花一点力气。
  • hibernate启动时无法从Java代码中设置参数?
  • AFAIK 最好的方法是使用 Apache DBCP、C3P0、HikariCP 或其他供应商创建一个DataSource,然后按照此处显示的步骤操作:stackoverflow.com/q/4406935/1065197。请注意,当您创建 DataSource 实例时,您可以根据需要/需要应用属性文件中的参数。
  • @LuiggiMendoza 我发现这对我有用:configuration.setProperty("hibernate.connection.username", "1234");你怎么看?

标签: java hibernate


【解决方案1】:

这取决于存储在 config.properties 中的属性的目的地

如果它们进入 java 系统属性,你可以像这样在你的休眠配置中使用它们:

<property name="hibernate.connection.password">${propertyName}</property>

如果您的属性转到其他地方,那么我认为 hibernate 不会自然地看到它们...

【讨论】:

  • Yes 在其他地方使用。如何让 Hibernate 看到这些属性?
【解决方案2】:

我的解决方案是,在运行时将属性添加到配置中:

configuration.setProperty("hibernate.connection.username", Config.db.getUser());

【讨论】:

    【解决方案3】:

    我就是这样做的:

    Map<String, Object> prop = new HashMap<String, Object>();
    
    prop.put("hibernate.connection.username", "asdf");
    prop.put("hibernate.connection.password", "xxx");
    
    
    Persistence.createEntityManagerFactory(persistenceUnitName, prop);
    

    【讨论】:

      猜你喜欢
      • 2017-11-08
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多