Использование LocalContainerTityManagerFactoryBean.SetManagedTypes вместо @entityScan (Spring Boot)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Использование LocalContainerTityManagerFactoryBean.SetManagedTypes вместо @entityScan (Spring Boot)

Сообщение Anonymous »

При использовании @entityscan все объекты в указанных базовыхпадах поднимаются сканированием. По определенным причинам мы хотели бы избежать этого. При установке Single ManagedTypes.
На самом деле мы были удивлены, что мы не смогли найти какой -либо пост, вопрос, вопрос StackOverflow и т. Д. Рекомендуется ли вопрос «Возможно ли настроить @EntityScan или альтернативу отслеживать только отдельные классы, а не полные пакеты?». /> javadoc of localcontainerentitymanagerfactorybean.setManagedTypes < /code> даже говорит: < /p>

Установите Persistencemanagedtypes для использования для составления списка управляемых типов в качестве альтернативы для организации объекта. https: //docs.spring.io...orm/jpa/localcontainerentitymanagerfactorybean

Я создал пример проекта, чтобы продемонстрировать идею: https://github.com/frankkriegl-zero/jpa ... n-79541611
из класса конфигурации Jpaconfig:
@Configuration
public class JpaConfig {

List sharedManagedEntityClassNames = Stream.of(
external.model.Book.class // located in a 'remote' package, outside of org.example.bookstore
).map(Class::getName).toList();

List managedEntityPackages = List.of(
"org.example.bookstore.model"
);

@Bean(name = "persistenceManagedTypes")
PersistenceManagedTypes persistenceManagedTypes(ResourceLoader resourceLoader) {
var scanResult = new PersistenceManagedTypesScanner(resourceLoader)
.scan(managedEntityPackages.toArray(new String[0]));

// merge the shared managed entity class names with the scanned ones
List managedClassNames = new ArrayList();
managedClassNames.addAll(sharedManagedEntityClassNames);
managedClassNames.addAll(scanResult.getManagedClassNames());

return PersistenceManagedTypes.of(managedClassNames, Collections.emptyList());
}

// entityManagerFactoryBean

}
< /code>
Вот как мы переопределяем компонент EntityManagerFactory: < /p>
@Bean(name = "entityManagerFactory")
public EntityManagerFactory entityManagerFactory(DataSource dataSource,
PersistenceManagedTypes managedTypes) {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());

factoryBean.setManagedTypes(managedTypes); // alternative to @EntityScan and @EnableJpaRepositories

factoryBean.afterPropertiesSet();
return factoryBean.getObject();
}
< /code>
Мы не чувствуем себя слишком уверенно в создании наших собственных эмфакционных бобов, так как это является основой каждой логики, связанной с JPA в приложении на основе JPA: < /p>

Мы не уверены, что это может создать дополнительные усилия по обслуживанию в случае реализации фреймворта (Spring Boot Boot или Hibernate). Скорее сложные настройки конфигурации, мы несколько боимся наблюдения за что -то контролировать и разбивать слой постоянства приложения.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... of-entitys
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»