Динамические поля в бинах JSF - PullRequest
2 голосов
/ 20 июля 2010

Я хочу позволить своему клиенту динамически создавать свои собственные поля и bean-компонент в CMS.

Также, как только он создает форму, мне нужно создать Hibernate Entity, который можно сохранить в базе данных.

Есть ли способ сделать это?

Я использую JSF2 и Hibernate 3

С перекомпиляцией и без?

Ответы [ 2 ]

1 голос
/ 20 июля 2010

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

Другой вариант - использовать модель Entity-Attribute-Value (EAV) ,Это то, что делают многие CMS.Я никогда не реализовывал это с Hibernate, но это выполнимо (и уже было сделано).Вот некоторые ресурсы:

Но, если честно, я бы не стал внедрять свою собственную CMS, а использовал бы уже существующую. Один Бегемотик кажется кандидатом.

См. Также

Смежные вопросы

1 голос
/ 20 июля 2010

Самый простой способ - использовать List<String> для имен полей и Map<String, Object> для значений полей. Доступ к картам в EL можно получить с помощью динамических клавиш, например:

<ui:repeat value="#{bean.fieldnames}" var="fieldname">
    <h:inputText value="#{bean.fieldvalues[fieldname]}" /><br />
</ui:repeat>

Совершенно другой альтернативой является автоматическое создание классов с использованием таких инструментов, как ASM / Javassist и создание таблиц базы данных на лету. Но это намного больше работы.

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