【问题标题】:Save hibernate.cfg.xml after changes更改后保存 hibernate.cfg.xml
【发布时间】:2020-07-29 13:12:11
【问题描述】:

我想在一些属性更改后保存我的 hibernate.cfg.xml。我可以在运行时更改属性,但我需要保存更改,以便在下次执行时访问新属性。

在 hibernate.cfg.xml 我有如下属性:

<hibernate-configuration>
   <session-factory>
      //...
      <property name="hibernate.connection.username">berkan</property>
      <property name="hibernate.connection.password">123456</property>
      //...
   </session-factory>
</hibernate-configuration>

我可以在运行时使用 setProperty() 更改属性,例如:

configuration = new Configuration().configure();
configuration.setProperty("hibernate.connection.username", "berkantest");
configuration.setProperty("hibernate.connection.password", "098765");
sessionFactory = configuration.buildSessionFactory(new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build());

但是在停止当前执行的构建后,我无法在下次执行时访问新的用户名和密码。我想将它们保存在 hibernate.cfg.xml 文件中。

【问题讨论】:

    标签: java hibernate properties configuration


    【解决方案1】:

    你思考的方向是非常错误的。通常是系统用户(组件或子系统的专用用户)放置在休眠配置文件中。如果您打算为每个用户建立一个专用连接,这意味着您的数据库服务器已经以一种或另一种方式创建了所有这些用户和密码。我建议根本不保存用户,或者如果您想保存用户,请将其保存在休眠配置文件之外的某个表或具有名称的文件下 - 例如 LastLoggedUser。

    通常,多用户场景的编码方式如下。您有一个或多个可能具有不同权限的数据库用户 f.ex。 - 用于报告的只读用户和用于常规使用的读写用户。然后在顶部为您的逻辑用户建模。你的出租车有 f.ex。数据库中名为 user 的表,其中普通用户将使用数据库用户进行读取、写入,而进行分析的用户将有权访问报告用户。现在这只是一个例子。

    只是不要尝试在运行时修改您的休眠配置文件。 9/10 情况下这是错误的。

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2021-12-29
      • 2015-03-26
      相关资源
      最近更新 更多