Почему не достаточно установить @Entity аннотацию?
Я упускаю суть здесь (производительность?)?
Спасибо.
Аннотации недостаточно, потому что в спячке не знают, где живут ваши аннотированные классы без какого-то явного объявления. Теоретически, она может сканировать каждый класс в classpath и искать аннотацию, но это будет очень дорого для больших проектов.
Вы можете использовать spring, которая имеет помощника, который может позволить вам указать пакет(ы), в которых находятся ваши объекты в спящем режиме, и она будет просто сканировать эти пакеты на @Entity. Если все ваши объекты находятся в небольшом количестве исправленных пакетов, то это хорошо работает.
Например
<bean id="referenceSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan">
<array>
<value>com.xxx.hibernate.objects</value>
</array>
</property>
</bean>
Выше приведено объявление весны. Если вы не знакомы с приведенным выше синтаксисом, вы можете просто построить его программно.
AnnotationSessionFactoryBean sfb = new AnnotationSessionFactoryBean();
sfb.setDataSource( ds );
sfb.setHibernateProperties( hibProps);
sfb.setPackagesToScan( ... );
sfb.initialise();
SessionFactory sf = sfb.getObject();
Он поддерживает кучу конфигурационных опций, так что вы можете использовать необработанные свойства или передать в преконфигурированном источнике данных.
. Не будет, если установить свойство hibernate.archive.autodetection
в true
. Здесь есть проблема с производительностью, так как Hibernate будет искать jar-файлы для JPA аннотации. Обратите внимание, что он также инициализирует эти классы.
Да :)
Файл hibernate.cfg.xml
не используется для указания ваших сущностей, он используется для настройки таких вещей, как параметры соединения в спящем режиме и глобальные настройки. Файл hibernate.cfg.xml
также содержит инструкции о том, как найти сущности. Вы можете перечислить файлы отображения XML, используя
, но если вы используете JPA аннотации типа @Entity
, то это необязательно, Hibernate автоматически определит их.
Вы можете смешивать аннотации и отображение XML, если вы выберете, но это ни в коем случае не является необходимым в большинстве ситуаций.
.По умолчанию все правильно аннотированы. классы и все найденные hbm.xml файлы внутри архива добавляются к конфигурация блока стойкости. Вы может добавить какую-либо внешнюю сущность через элемент класса, однако.