Как динамически создать класс Java POJO? - PullRequest
0 голосов
/ 19 августа 2011

Я видел сообщение на этом сайте о динамическом генерации POJO.У меня сейчас аналогичное требование.

У меня есть несколько таблиц в базе данных.Я хочу иметь класс POJO для каждой таблицы с полями и соответствующими методами получения и установки.Эти классы должны создаваться динамически.После создания этих классов я должен использовать эти установщики и получатели в другом классе для получения и установки данных и возврата объекта Java.

Я видел BCEL, CGLIB и некоторые другие инструменты с открытым исходным кодом для этого, но не смогнайти правильный пример.Вы можете мне помочь?

1 Ответ

1 голос
/ 19 августа 2011

Рассматривали ли вы какие-либо из структур ORM (Object Relational Mapping), которые были созданы именно для этой цели? Например, Hibernate или стандарт Java EE 6 JPA . Звучит так, будто вы начинаете идти по пути переизобретения чего-то довольно сложного и очень трудоемкого - никогда не хорошая идея.

ОБНОВЛЕНИЕ: в ответ на комментарий

Ну, я могу только сказать, что вы, ребята, строите себя в мире боли. Рассмотрим:

  1. Если вы полагаетесь на полностью динамические классы, собираетесь ли вы ссылаться на эти классы и объекты из других классов? Через отражение? И как вы собираетесь отслеживать все созданные классы, их имена и имена их установщиков и получателей?
  2. Что происходит, когда вам нужно перезагрузить систему? Как вы собираетесь воссоздать все эти динамические классы?
  3. С полностью динамической базой данных, как вы собираетесь оптимизировать ее производительность? Например, как индексирование.

Я могу только настоятельно рекомендовать вам переосмыслить вашу архитектуру. Динамические модели данных - это беспорядок, и практически невозможно их поддерживать, оптимизировать и отлаживать. Я видел системы, основанные на этом, и это не красиво. IBM Lotus WCM - яркий пример ужаса модели данных. Правильно спроектированная и нормализованная реляционная модель будет лучше в 99,99999999% случаев.

Сочетание этого с использованием динамических классов ORM во время выполнения будет совершенно невозможно поддерживать (и понимать).

...