Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 97

Динамическое создание модели данных

24.04.2013, 20:09. Показов 5111. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,у меня какая ситуация для работы с БД используется модель данных(других вариантов нет),всё бы хорошо,но я до конца не знаю какое количество у меня будет полей и какого они будут типа.Собственно вопрос как можно в нужный мне момент генерировать эти самые поля в модели для БД.Чтобы было понятнее попробую привести пример.
Происходят какие либо действия и нам становиться известно что поля будет 2 int id;String name;
и у нас есть модель
model.java

public class Model
{
public Model()
{
}

}
как мне привести её к виду
public class Model
{
int id;
String name;
public Model()
{
}
getter/setter
}
с учётом того что это должно происходить во время выполнения программы или подскажите альтернативу)За ранее спасибо,надеюсь понятно объяснил)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2013, 20:09
Ответы с готовыми решениями:

Динамическое создание экземпляра
Здравствуйте,форумчане) Есть один класс(назовём его с1),у него есть циклический метод (m.c1).В нём вызывается метод ещё одного...

Динамическое создание элементов интерфейса
Хотелось бы создавать кнопочки и др. элементы в аплете динамически, читая информацию из файла-параметра. Реально ли это, позволяет ли...

Динамическое создание дочерних классов
Доброго времени суток. Уважаемые форумчане, подскажите пожалуйста, как реализовать данную задумку: в общем, есть родительский класс, я...

10
31 / 31 / 10
Регистрация: 01.03.2013
Сообщений: 61
24.04.2013, 20:28
Хм..Задание, конечно, интересное. Ну, а как насчет такой структуры:

Java
1
2
3
4
5
6
7
8
  class Model {
       private Map fields;
       
       public get(Key, Value);
       public set(Key, Value);
 
       public addField(NameField, Value);
  }
Допустим fields - это мапа Ваших полей(например, HashMap), в которой ключ - это имя поля, а значение это, собственно, значение
Можно добавлять, поля которые необходимо, получать их значение, изменять имя.
1
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 97
24.04.2013, 20:44  [ТС]
я рассматривал это как вариант,но тут есть кое какие нюансы а именно т.к используется noSql и происходит запись самой модели в бд(по другому нельзя только через модель,нет такой вещи как Insert table into() value(),а может и есть,но я как то не нашёл)то есть в бд будет находиться все мои данные в одной ячейки,записать я смогу,но вот как мне в последствие с этими данными работать)
Запись будет приблизительно такого вида
id= 1;
name = test;
помещаем это всё в мапу и отдаём модель на запись в бд
в бд:Название ячейки id;1;name;test
не уверен что именно такая будет запись,но потом доставать эти данные и парсить их через StringTokinaizer как вариант,но это если 2 поля,а если их 10 или больше
0
31 / 31 / 10
Регистрация: 01.03.2013
Сообщений: 61
24.04.2013, 20:59
Я нельзя ли получить объяснение причины использования динамического добавления полей? Напишите, пожалуйста, с какой целью применяется и в чем задача. Возможно, есть более просто решение. Просто, не совсем понятно, как продумана архитектура приложения, если одни и те же данные будет меняться со временем и зараннее нельзя точно сказать, как они будут выглядеть.
1
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 97
24.04.2013, 21:07  [ТС]
Конечно,есть интерфейс(настройки так называемые)там пользователь выбирает(создаёт) модель свой будущей базы данных\интерфейса,он выбирает какие поля будут использоваться и даёт им имена(указывает наличие валидаторов и т.д)вся эта информация храниться в мапе<Название(которое потом используется для css,Component)>дальше происходит инициализация интерфейса из мапы достаются значение и ключи и создаётся интерфейс(так же форма для добавления элементов и удаления и т.д)и теперь когда мне нужно добавить элемент в бд(форма отдаётся сервелету который создаёт экземпляр класса и его уже записывает с помощью менеджера в бд).Вот и остаётся лишь вопрос с моделью как мне её изменять в зависимости от конфигурации пользователя.Понятно объясняю?))
0
31 / 31 / 10
Регистрация: 01.03.2013
Сообщений: 61
24.04.2013, 21:30
Цитата Сообщение от qwerty23_13 Посмотреть сообщение
Конечно,есть интерфейс(настройки так называемые)там пользователь выбирает(создаёт) модель свой будущей базы данных\интерфейса,он выбирает какие поля будут использоваться и даёт им имена(указывает наличие валидаторов и т.д)вся эта информация храниться в мапе<Название(которое потом используется для css,Component)>дальше происходит инициализация интерфейса из мапы достаются значение и ключи и создаётся интерфейс(так же форма для добавления элементов и удаления и т.д)и теперь когда мне нужно добавить элемент в бд(форма отдаётся сервелету который создаёт экземпляр класса и его уже записывает с помощью менеджера в бд).Вот и остаётся лишь вопрос с моделью как мне её изменять в зависимости от конфигурации пользователя.Понятно объясняю?))
Да, вполне понятно. Окей, давайте попробуем разобраться в следующем: когда клиент выбирает модель своего интерфейса, то у него ограниченное количество вариантов или на клиентской стороне будут добавляться новые возможности? Если у него ограниченное количество вариантов и интерфейс генерируется исключительно на одном наборе, только с разным количеством, то мы можем использовать один класс, в котором буду все поля, удовлетворяющие предоставляемому нами выбору для клиента.
Пусть у нас 10 вариантов для интерфейса(имя, фамилия, ник, год рождения и т.д. что взудмается), тогда мы создаем соответствующий класс Interface, в которм присутствуют перечисленные поля. Когда мы получаем мапу(хотя, мне кажется, что здесь лучшим выбором будет JSON), то мы заносим данные по соответствующим полям и сохраняем в БД(неиспользуемые поля - null). Когда же мы будем доставать данные и строить соответствующий интерфейс для пользователя, то все нулевые значения будут игнорироваться, а на основании остальных будем отображать то, что необходимо. Неплохо было бы заюзать JAXB. Правда, большим минусом такого подхода является слишком большой класс при необходимости огромного интерфейса(затраты памяти на создание и хранение).
Возможно, использование варианта с мапой не самый плохой, но необходимо будет создавать дополнительный сервис, который будет сохранять в БД и парсить из нее для получения данных для конкретного пользователя.
1
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 97
24.04.2013, 21:49  [ТС]
Есть более простой способ,это отказаться от noSql и работать с SQL благодаря тому что я смогу установить связь с бд и выполнить query типа(Insert table into() value()) модель по факту мне не понадобиться и в последствие уже обращаться к самой бд и работать с данными полученными через запросы,мне кажется это самое рациональное решение,или я ошибаюсь?
0
31 / 31 / 10
Регистрация: 01.03.2013
Сообщений: 61
24.04.2013, 22:27
Цитата Сообщение от qwerty23_13 Посмотреть сообщение
Есть более простой способ,это отказаться от noSql и работать с SQL благодаря тому что я смогу установить связь с бд и выполнить query типа(Insert table into() value()) модель по факту мне не понадобиться и в последствие уже обращаться к самой бд и работать с данными полученными через запросы,мне кажется это самое рациональное решение,или я ошибаюсь?
Все зависит от приложения. Все равно Вам нужно будет спланировать удобное и логичное хранение данных в SQL-таблицах, их выборку, обработку запросов.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.04.2013, 00:45
уже второй раз я вижу такой юзкейс, люди таое придумывают, всё равно что на велосипеде кверху колёсами ездить.
слово рациональный тут неуместно
1
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 97
25.04.2013, 11:52  [ТС]
я же в самом начале писал что по возможности предлагайте альтернативы т.к я не нахожу это решение самым простым и собираюсь реализовывать его только из-за безвыходности(незнания другого решения)...
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.04.2013, 12:50
Вы пока толком не рассказали про ТЗ, а уже ждёте советов.
Если вы про автоматическое создание таблиц по сущностям ORM, то это всё уже давно есть и задача заключается в маппинге типов java на соответствующие или близкие по значению типы из конкретной БД.
Но генерить связи, индексы и тд всё равно придётся с участием человека.
Обратная ситуация - генерация снизу вверх тоже уже реализована и тоже требует участия человека.
На сегодняшний день проблема вообще не в генерации, а в выборе оптимальной стратегии для ожидаемой производительности приложения.
То что вы смутно себе представляете на самом деле никому и близко не нужно.
Если бы можно было бы что нибудь подобное создать жизнеспособным, кто бы стал платить столько денег программистам за разработку типичных бизнес приложений по стандартной модели?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2013, 12:50
Помогаю со студенческими работами здесь

JBoss: динамическое создание на сервере файлов для скачивания
Доброго времени суток всем! Простой вопрос, просветите плиз: Возникла необходимость динамически создавать файлы на сервере и отдавать...

Динамическое создание элементов интерфейса?
подскажите плз. и/или ткните носом где почитать про динамическое создание элементов интерфейса (фреймы-окна внутри приложения, чекбоксы,...

Динамическое создание имен переменных
Просветите, кто знает. Хочу создать 30 переменных, но не прописывать каждую, а сгенерировать их имена в цикле, а потом также в цикле...

Динамическое создание экземпляров класса (Cars)
Есть класс static class Cars { public static int ArriveTime, FillTime; } Нужно будет динамически создавать его экземпляры...

Spring динамическое создание каналов
Вообщем пишу веб-приложения для работы с Rss рассылками с использованием spring, hibernate. Прочитал ,что в spring есть feed adapter. Можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru