Я работаю над приложением весенней загрузки, содержащим набор сущностей JPA.Некоторые из объектов являются уникальными для приложения, но подмножество извлекается из независимого сервера REST.
Приложение прослушивает сообщения JMS и, после их получения, выполняет вызов REST на сервер, чтобы получитьПолезная нагрузка XML, которая затем демаршируется в объект для использования в некоторой бизнес-логике.При получении сущности должны быть сохранены в базе данных (PostgresQL) и извлечены в определенные моменты в определенных классах.
Однако маршалинг Xml выполняется без каких-либо знаний о типе полезной нагрузки, и мне было интересно,есть некоторый аналог для сохранения сущности, использующей JpaRepository, без проверки типов и создания репозитория с использованием фабрики.
В настоящее время наиболее подходящим решением, о котором я могу подумать, является наличие JpaRepositoryFactory, который возвращает соответствующий репозиторий,как показано ниже:
@Component
public class JpaRepositoryFactory {
@Autowired
FooRepository fooRepository;
@Autowired
BarRepository barRepository;
@Autowired
BazRepository bazRepository;
public static JpaRepository retrieveRepository(Class clazz) {
switch (clazz) {
case Foo.class:
return fooRepository;
break;
case Bar.class:
return barRepository;
break;
case Baz.class;
return bazRepository;
break;
default:
throw SomeJpaRepositoryFactoryException();
}
}
}
Однако есть несколько сущностей, и я не люблю использовать операторы switch-case, где может присутствовать лучшее решение.
Считается ли этобыть лучшей практикой, или есть лучшие способы сделать это?
Заранее спасибо.