Hibernate: динамическое создание таблиц путем чтения файлов сопоставления hbm из местоположения - PullRequest
2 голосов
/ 07 июня 2019

Как динамически создавать таблицы из файлов hbm?

У моего продукта несколько клиентов.Для добавления нового клиента клиенту будет предоставлен файл сопоставления hbm для хранения данных.(каждый клиент имеет разные данные и таблицу).

REST api будет вызываться с расположением файла hbm при добавлении нового клиента.

Как hibernate может создавать таблицы, динамически читая файл hbm?

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Пример кода для динамической загрузки файлов hbm:

public class LoadHBMFile {

    private static final SessionFactory session = createSession();

    private static SessionFactory createSession() {
        try {

            SessionFactory sessionFactory = new Configuration()
                    .configure("hibernate.cfg.xml")
                    .addResource("{full path}/demo.hbm.xml")
                    .buildSessionFactory();

            return sessionFactory;

        } catch (Throwable ex) {
            System.out.println("Failed" + ex);
        }
    }

    /* To get the sessionfactory */
    public static SessionFactory getSession() {
        return session;
    }

    /* To close the sessionfactory */
    public static void shutdown() {
        getSession().close();
    }

}

Надеюсь, это поможет:)

0 голосов
/ 07 июня 2019

Привет, это будет двухэтапный процесс.

  1. Вам необходимо создать Hibernate Session Factory во время выполнения , чтобы заставить hibernate создать таблицу после получения файла hbm. Для этого вы можете использовать следующий атрибут в конфигурации:

    hibernate.hbm2ddl.auto

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

  1. Вторым шагом будет использование динамических моделей Hibernate http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#persistent-classes-dynamicmodels Это потому, что у вас не будет реализации сущности во время выполнения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...