Как динамически создать таблицу в базе данных с помощью Hibernate? - PullRequest
2 голосов
/ 12 марта 2012

Я новичок в спящем режиме, и мне нужно создать таблицу базы данных на лету.Это означает, что я буду брать детали таблицы от пользователя из пользовательского интерфейса.Допустим, мы ограничиваем пользователя по количеству атрибутов таблицы (столбца) до 5 или около того.

Я прошел различные уроки по hibernate и вижу, что мы можем создать таблицу, но для этого нам нужен класс заранее.Но в моем случае все будет динамично.

По сравнению с JDBC мы можем напрямую выполнить запрос CREATE TABLE и передать параметры таблицы в запрос в коде Java.

Мое веб-приложение использует веб-сервис REST, среду Spring 3 и MySQL в качестве базы данных.

Любые учебные ссылки или примеры кода будут очень полезны

Спасибо

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

Я думаю, вы можете использовать класс SchemaExport, который имеет метод create () , чтобы сгенерировать сценарии создания схемы таблицы из набора заданных файлов отображения hibernate, а затем выполнить эти сценарии.

Вы должны создать XML-код отображения гибернации прагматично в соответствии с информацией, введенной пользователем, и передать этот XML-код в объект Configuration, который передается объекту SchemaExport. Что-то вроде этого:

Configuration config = new Configuration();
// mappingClass.xml is generated according to the information entered by user
config.addResource("mappingClass.xml");  

SchemaExport schemaExport = new SchemaExport(config);
schemaExport.create(true,true)  
0 голосов
/ 12 марта 2012

Посмотрите на Apache CouchDB.Похоже, хорошо подходит в вашем случае.Добавляя новые таблицы с помощью кода, вы вызываете проблемы.Если бы это было решение для производственной среды, я бы смиренно попросил вас пересмотреть.Вы не хотите заниматься DBA через код.

0 голосов
/ 12 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...