Spring-boot. Создание таблиц по запросу

226
18 мая 2018, 03:40

Я работаю со Spring boot и JPA/Hibernate. У меня есть 2 типа таблиц:

  1. ModelPool - список всех моделей, состоит из 2х полей: id и name
  2. Model - описание модели.

Так как модель может хранить миллионы записей, характеризующие ее, и самих моделей может быть тысячи, то было принято решение, что для каждой модели необходимо создавать свою персональную таблицу.

Вопрос. Как в Spring можно динамически создавать таблицы, давать им имена по некому алгоритму и помещать в application context?

Уже достаточно долго бьюсь с этой задачей и не могу найти нормального решения.

Рассматриваю варианты реализации через @Query отправку прямого запроса на создание таблицы, но как ее инициализировать потом в application context?

Также копаю в сторону Entitymanagerfactory, но пока не могу найти нормального решения.

Буду очень благодарен за подсказку.

Answer 1

Задача решена через реализацию DDL-script'а schema.sql и объявления соответствующего бина в applicationContext

 public DataSource createTable() {
        ApplicationContext applicationContext = ApplicationContextProvider.getApplicationContext();
        DataSource dataSource = (DataSource) applicationContext.getBean("dataSource");
        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
        databasePopulator.setContinueOnError(true);
        databasePopulator.addScript(new ClassPathResource("schema.sql"));
        DatabasePopulatorUtils.execute(databasePopulator,dataSource);
        return dataSource;
    }
READ ALSO
DynamoDBMapper не сохраняет данные

DynamoDBMapper не сохраняет данные

DynamoDBMapper не сохраняет данные, поток блокируется на save()База данных локальная (downloadable version)

216
Unable to build Hibernate SessionFactory

Unable to build Hibernate SessionFactory

Подключается к базе postgres нормально, на сервере данный код отрабатывает без проблем, у меня на локальной машине такая проблема!

523
Создание объекта в параметрах метода

Создание объекта в параметрах метода

Никак не могу разобраться в чем отличиеВот исходный код:

239
Программа не видит validation.properties

Программа не видит validation.properties

Вместо того что бы выводилось значение свойства, выводится просто текст, который я вписываюЯ пытался обойти эту проблему, вписывая значение...

357