我已经使用Hibernate几年了,但只使用它注释,并在我的代码中设置连接参数.
我没有使用XML文件"遗漏了什么"?是否只有XML可用的重要功能?是否有使用XML的情况或模式?
我认为你不会错过任何事情是非常安全的.
如果XML中的任何功能无法在属性中表示(我相信有一些罕见的情况),那么您仍然可以选择使用[RawXml]并在属性中编写XML.所以你不可能错过任何功能.
如果您的团队中有足够的程序员只是喜欢管理单独的文件,或者如果真的需要动态编辑xml映射,那么使用XML可能是有意义的.对于非常复杂的映射,Xml映射文件可能更容易操作,并且它们可以包含有用的信息(关于获取策略的注释等).
还存在架构问题,有些人认为将映射分离为XML文件可以更好地区分业务相关代码和有关如何持久化的指令.
注释是快速配置Hibernate的好方法.但是像Hibernate这样的OR mappers的一个关键特性就是你保持你的域模型"持久性无知",你的对象不需要知道它们在何处以及如何持久存在.有些人可能会争辩说,使用注释打破了这一点.在持久性只是众多问题之一的情况下,将事物分开是有意义的.
另一个原因可能是域对象在不同情况下以不同方式持久存在,您可以使用一个应用程序使用多个数据库,或者使用相同域模型的更多应用程序.
Hibernate不使用EJB3/JPA标准注释吗?如果是这样,我至少可以想到使用XML的一个原因:那些注释没有Hibernate的所有功能.
示例:Hibernate可以为ID定义"本机"类型.这将在MySQL上创建一个自动增量字段,在Oracle上创建一个序列.使用JPA注释无法在两种情况下都能正常工作.
此外,XML是可插拔的.注释不是.如果您运送到多个数据库平台并为每个数据库平台配置不同的配置,这可能对您很重要.
XML已经不再受到许多开发人员的青睐,仅仅因为这个原因,我认为很多人都喜欢注释.事实上,无论如何你都有XML(以persistence.xml文件的形式,可能还有其他文件).它有点像六个,另外六个.