是否有充分的理由使用 XML 而不是通过注释来配置休眠?

2022-09-03 01:59:44

我已经使用Hibernate几年了,但只将其与注释一起使用,并在我的代码中设置连接参数。

我是否因为不使用 XML 文件而“遗漏了某些内容”?是否有仅在 XML 中可用的重要功能?是否存在使用 XML 有意义的情况或模式?


答案 1

我认为可以肯定地说,你没有错过任何东西。

如果 XML 中有任何功能无法在属性中表示(我相信存在一些极少数情况),那么您仍然可以选择使用 [RawXml] 并在属性中编写 XML。因此,您不可能错过任何功能。

如果您的团队中有足够的程序员只是喜欢管理单独的文件,或者确实需要动态编辑 xml 映射,那么使用 XML 可能是有意义的。对于非常复杂的映射,Xml映射文件可能更容易操作,并且它们可以包含有用的信息(有关获取策略的注释等)。

还有一个体系结构问题,有些人认为,将映射分离到 XML 文件中,可以在与业务相关的代码和有关如何持久化代码的说明之间更好地分离。


答案 2

注释是快速配置休眠的好方法。但是像Hibernate这样的OR映射器的一个关键特征是,你可以保持你的领域模型“持久性无知”,你的对象不需要知道它们在何处以及如何持久化。有些人可能会争辩说,使用注释会打破这一点。在持久性只是众多问题之一的情况下,保持事物独立是有意义的。

另一个原因可能是域对象在不同情况下以不同的方式持久化,您可以拥有多个数据库,或者一个应用程序甚至更多使用相同域模型的应用程序。


推荐