在Hibernate中:是否可以为实体混合使用注释和XML配置?

那么,是否可以混合使用这两种配置,而不是只使用其中一种配置?

我想要的只是保留注释的所有配置,并通过XML读取表。

可能吗?

多谢。

编辑:hbm.xml文件将如何?我有这个:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="MyData" table="MyTable" >
    </class>
</hibernate-mapping>

并且不要编译 dtd。


答案 1

休眠文档(最新)

请注意,您可以混合使用传统的 hbm.xml用法和注释方法。资源元素可以是 hbm 文件或 EJB3 XML 部署描述符。这种区别对于您的配置过程是透明的。

您可以将带注释的持久类和经典的 hbm.cfg.xml 声明与同一 SessionFactory 混合使用。但是,您不能多次声明一个类(无论是带注释的还是通过 hbm.xml)。也不能在实体层次结构中混合使用配置策略(hbm 与注释)。

为了简化从 hbm 文件到注释的迁移过程,配置机制会检测注释和 hbm 文件之间的映射重复。然后,HBM 文件优先于带批注的元数据,逐个类。您可以使用 hibernate.mapping.precedence 属性更改优先级。默认值是,如果将其更改为,则在发生冲突时,将注释的类优先于 hbm 文件。hbm, classclass, hbm


答案 2

推荐