Аннотации недостаточно, потому что hibernate не знает, где живут ваши аннотированные классы, без какого-либо явного объявления. Теоретически он может сканировать каждый класс в пути к классам и искать аннотацию, но это будет очень дорого для крупных проектов.
Вы можете использовать spring, у которого есть помощник, который может позволить вам указать пакеты, в которых находятся ваши объекты гибернации, и он просто просканирует эти пакеты на наличие @Entity. Если у вас есть все ваши объекты в небольшом количестве фиксированных пакетов, это хорошо работает.
* 1005 Е.Г. *
<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>
Выше приведена декларация Spring. Если вы не знакомы с вышеуказанным синтаксисом, вы можете просто сконструировать его программно.
AnnotationSessionFactoryBean sfb = new AnnotationSessionFactoryBean();
sfb.setDataSource( ds );
sfb.setHibernateProperties( hibProps);
sfb.setPackagesToScan( ... );
sfb.initialise();
SessionFactory sf = sfb.getObject();
Он поддерживает несколько параметров конфигурации, так что вы можете использовать необработанные свойства или передать предварительно настроенный источник данных.