В Hibernate: можно ли смешивать аннотации и конфигурацию XML для сущности? - PullRequest
11 голосов
/ 27 декабря 2011

Итак, можно ли смешивать обе конфигурации вместо использования только одной из них?

Все, что я хочу, - это сохранить всю конфигурацию по аннотациям и прочитать таблицу в 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 Ответ

20 голосов
/ 27 декабря 2011

Документы Hibernate (последние)

Обратите внимание, что вы можете смешать устаревшее использование hbm.xml и подход аннотации.Элементом ресурса может быть либо файл hbm, либо дескриптор развертывания EJB3 XML.Различие прозрачно для вашего процесса конфигурации.

Вы можете смешивать аннотированные постоянные классы и классические объявления hbm.cfg.xml с одним и тем же SessionFactory.Однако вы не можете объявить класс несколько раз (аннотированный или через hbm.xml).Вы также не можете смешивать стратегии конфигурации (hbm против аннотаций) в иерархии объектов.

Чтобы упростить процесс перехода от файлов hbm к аннотациям, механизм конфигурации обнаруживает дублирование сопоставления между аннотациями и файлами hbm.Файлы HBM затем располагаются по приоритетам над аннотированными метаданными от класса к классу.Вы можете изменить приоритет, используя свойство hibernate.mapping.precedence.По умолчанию используется значение hbm, class, и при его изменении значение class, hbm будет иметь приоритет над аннотированными классами над файлами hbm при возникновении конфликта.

...