Я пытаюсь перейти от конфигурации на основе XML к конфигурации на основе Java в многомодульном проекте.Я также пытаюсь прекратить использовать файлы persistence.xml и orm.xml для моей настройки JPA.Моя попытка использовать метод LocalContainerEntityManagerFactoryBean.setPackagesToScan (packages) делает определение моего entityManagerFactory неправильным, как мне кажется.В этом определении знание о местонахождении пакетов, содержащих сущности JPA, просочилось из каждого подмодуля в модуль, где я определяю свой entityManagerFactory.
@Bean
@DependsOn("liquibase")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
emf.setDataSource(dataSource);
emf.setPackagesToScan(new String[] { "package.in.module1.db",
"package.in.module2.db",
"package.in.module3.db",
"package.in.module4.db"});
emf.setPersistenceProviderClass(HibernatePersistenceProvider.class);
emf.setJpaProperties(jpaProperties());
emf.setLoadTimeWeaver(instrumentationLoadTimeWeaver());
return emf;
}
В справочной документации Spring Data я считаю, что это возможноиспользовать MergingPersistenceUnitManager для объединения единиц персистентности, определенных отдельно в модулях, но для этого потребуется использовать файлы persitence.xml и orm.xml вместо конфигурации на основе Java.
Что мне нужно сделать, чтобычтобы знать, где мои сущности JPA (и, если на то пошло, мои репозитории) внутри каждого отдельного подмодуля?
... Я думаю, что одним из решений было бы просто позволить entityManangerFacotry сканировать некоторый пакет высокого уровня, общийко всем модулям, но разве это не считается плохой практикой?
С уважением, Фредрик