Я провел несколько исследований подходов к сканированию классов, используя ответы из StackOverflow. Поэтому я собрал все это вместе, используя сканирование объектов Hibernate в качестве теста, в одном тестовом проекте: hibernate-scanners-test .
Использование Fluent-Hibernate
Если вы ищете способ быстрого сканирования без дополнительных зависимостей, вы можете попробовать библиотеку fluent-hibernate (вам не понадобятся другие jar-файлы, кроме библиотеки).
Помимо этого, он имеет некоторые полезные функции для Hibernate 5 и Hibernate 4, включая сканирование объектов, стратегию неявного именования Hibernate 5, вложенный преобразователь и другие.
Просто скачайте библиотеку со страницы проекта: Свободно-спящий режим и используйте EntityScanner :
Для Hibernate 4 и Hibernate 5:
Configuration configuration = new Configuration();
EntityScanner.scanPackages("my.com.entities", "my.com.other.entities")
.addTo(configuration);
SessionFactory sessionFactory = configuration.buildSessionFactory();
Использование нового API загрузки Hibernate 5:
List<Class<?>> classes = EntityScanner
.scanPackages("my.com.entities", "my.com.other.entities").result();
MetadataSources metadataSources = new MetadataSources();
for (Class<?> annotatedClass : classes) {
metadataSources.addAnnotatedClass(annotatedClass);
}
SessionFactory sessionFactory = metadataSources.buildMetadata()
.buildSessionFactory();