【问题标题】:Is there any benefit in setting properties in an xml file rather than a java class? [closed]在 xml 文件而不是 java 类中设置属性有什么好处吗? [关闭]
【发布时间】:2015-06-18 09:32:00
【问题描述】:

我正在处理一个使用 hibernate 的项目,并在 java 类(名为 DoahibernateUtil)而不是 xml 文件中设置了 hibernate 的属性,如方言,我想知道为什么程序员没有使用 xml 文件? 我的第二个问题是,为什么在hibernate文件夹中既没有将数据库表映射到程序的xml文件,这一行是将表映射到程序而不是那个xml文件?

AnnotationConfiguration cfg = new AnnotationConfiguration()
    .addAnnotatedClass(mehad.entities.LogTable.class)

【问题讨论】:

  • 考虑一次您需要更新属性的可能性。如果在 .java 类中,则需要重新编译、重新发布、重新部署……如果在 .xml 文件中,则只需更改 .xml 并重新启动服务器。跨度>
  • XML 很痛苦,从重构的角度来看,大量 xml 的项目往往更脆弱。看起来您的程序员/项目正在使用基于注释的配置,这在我能想到的任何情况下都比 xml 更可取。当配置与它相关的代码一起存在时,这是一件好事。
  • @aroth 您对 Stultuske 的想法有何看法?更新属性怎么样?
  • 更多地同意@Stultuske:如果您有一些应用程序的软配置,您可以重新解析 configuration.xml 以加载新的配置会话或应用程序明智。你不需要重新启动:)
  • @shakiba - 当我构建一个 Java 项目时,最终结果/可部署是单个 WAR 文件。所以仍然需要重新构建,即使是对 xml 文件的更改(如果您正在进行适当的部署管理,无论如何)。是的,您可以通过进入服务器的部署文件夹并编辑/替换 xml 文件然后重新启动服务器/重新解析 xml 来进行临时更改,但我认为这样做几乎没有什么好处。理想情况下,无论如何您都应该有一个“一键式”(或一键式)构建/部署过程,此时编译 Java 可能比手动移动文件要快。

标签: java xml hibernate annotations


【解决方案1】:

xml 的优点:

  • 无需重新构建应用程序即可更改映射
  • 您的实体源代码是干净的,无需显式依赖于 Hibernate

注释的优点:

  • 映射更具可读性
  • 映射随代码而生,因此更容易维护

【讨论】:

  • 我的第二个问题呢? ;)
  • 关于第二个专业人士,当然其他 JPA 提供商也支持基于注释的配置,只要您避免依赖特定于休眠的注释?
  • @shakiba 在该代码中,您正在将带注释的类添加到配置中。它不会使用 XML 文件。如果这没有帮助,请澄清您的问题
  • @aroth 无论如何它会为您的代码添加另一个依赖项
  • @onof 就我在不同的教程中读到的而言,应该有一个扩展名为 .hbm 的 xml 文件,用于将表映射到我们的程序,我在问,因为没有任何 xml 文件,该代码是否在做同样的事情?
【解决方案2】:

另一个因素是更改配置文件比更改 Java 源代码更安全。可能有些人你相信他们会修改配置文件,但不相信他们会修改源代码。

【讨论】:

  • 这可以双向进行,特别是如果您的 xml 文件需要为源代码(或第三方库)中的事物引用完全限定的类名。这样做很容易出错,而不是编辑器中的编译器错误,您通常会在启动服务器时得到一个堆栈跟踪(通常是一个嵌套的堆栈跟踪,其根目录为 NoClassDefFoundError)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多