powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
25 сообщений из 28, страница 1 из 2
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38533711
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс ItemPropType - определяет тип свойства объекта
Класс Item - определяет объект
У объекта может быть некий набор свойств, у свойства есть строковое значение.
Набор свойств конкретного объекта зависит от его типа.

Лучше всего реализовать этот набор через HashMap<ItemPropType,String> или как?
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38533727
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38533760
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточню задачу. Пользователь заполняет таблицу со свойствами. Создает нужные ему типы объектов. Указывает у какого типа объектов какие свойства присутствуют. После того как у объекта будет выбран его тип, я даю возможность заполнить ему значения для этих свойств. Возможно прийдется быстро искать эти свойства по их типу в коллекции свойств объекта, поэтому реализация их что-то типа HashSet<ItemPropValue> кажется неудачной.
Вариант 1
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class ItemProp {
  int id;
  String name;
}

class Item {
 int id;
 HashMap<ItemProp,String> itemProps;
}



Вариант 2
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class ItemProp {
  int id;
  String name;
}

class ItemPropValue {
  Item parent;
  ItemProp prop;
  String value;
}


class Item {
 int id;
 HashSet<ItemPropValue> itemProps;
}



И не забывайте - объекты делаются для Hibernate
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38538574
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел как сделать вариант 2
Код: xml
1.
2.
3.
4.
5.
6.
7.
		<map name="properties" table="CI_PROPS_VALS" lazy="true" cascade="all" >	
			<key column="CI_ID" />						
			<map-key-many-to-many column="PROP_ID"  
			   class="ItemProp"
				 />
			<element column="STRING_VALUE" type="java.lang.String" />
		</map>
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38538575
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, имелся ввиду 1-й вариант. Да и <map name="itemProps" ... текст должен начинаться
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38538613
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если название свойства уникальное, то класс ItemProp тут лишний (а тем более ItemPropValue).
Класс Item должен выглядеть следующим образом:
Код: java
1.
2.
3.
4.
class Item {
 int id;
 Map<String,String> itemProps = new HashMap<String,String>();
}


При этом таблица itemProps на самом деле в базе будет, но в классах ее не должно быть, всё решается меппингом/аннотациями
Код: xml
1.
2.
3.
4.
5.
    <map name="itemProps" table="ITEM_PROPS" cascade="all">
      <key column="ITEM_ID" />
      <map-key type="string" column="PROP_NAME" />
      <element type="string" column="PROP_VALUE" />
    </map>
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38538623
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Prop класс нужен т.к. это классификатор.
А свойства это всего лишь табличка один ко многим. Вам повезло что свойства все строковые.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38538633
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, если у свойств кроме названия и значения есть еще какие-то характеристики, то для этого случая правильный меппинг уже показан выше.
Но для простых случаев "название-значение" не вижу смысла городить лишние классы.
При этом вполне может быть и справочник свойств в отдельной таблице, хотя и не будет отслеживаться ссылочная целостность.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38538803
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип объектаid name2 Носки4 Водка
Объектыid PropType Name33 2 Махровые34 4 Столичная

Атрибутыid idObj Name Values123 34 Крепость 40124 34 Прозрачность 1.0125 33 Аромат "Сильный"
?
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539095
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица свойств нужна, так как у разного типа объекта набор свойств разный. Существует табличка многие-к-многим, где описывается что у Носков есть свойство Аромат и Производитель, а у Водки - Производитель, Крепость и Прозрачность.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539120
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsolaoСуществует табличка многие-к-многим
вот и нарисуй их как я нарисовал в ворде или excell. А потом программируй.
Т.к. если добавить ещё тип атрибута, то рукой подать до EAV.
Удачи!
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539208
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вот и нарисуй их как я нарисовал в ворде или excell. А потом программируй.


Не хватает мелочи, как сделать так, чтобы Hibernate генерил метод getКрепость() у объекта на основании того, что в табличке Атрибуты есть строка про это дело.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539230
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевHibernate генерил метод getКрепость()
хороший юмор)).....по строкам-динамике, генерить код-статику))
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539243
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123хороший юмор)).....по строкам-динамике, генерить код-статику))
Легко. Просто дело в другом. Классам генеренными в динамике, некому пользоваться. Ведь до генерации об их структуре никто не знает.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539250
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

А разве не в этом был смысл вопроса ТС?

Цитируя Cтругацких:
Извини, Теодор, но это ты очень странно рассуждаешь. Бессмыслица — искать решение, если оно и так есть. Речь идёт о том, как поступать с задачей, которая решения не имеет.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539269
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПросто дело в другом. Классам генеренными в динамике, некому пользоваться. Ведь до генерации об их структуре никто не знает.
В java можно пользоваться методом Duck typing.
Код: java
1.
obj.getClass().getMethod(method.getName(), method.getParameterTypes()).invoke(obj, args);
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539285
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев В java можно пользоваться методом Duck typing.
Код: java
1.
obj.getClass().getMethod(method.getName(), method.getParameterTypes()).invoke(obj, args);


И что? Для того чтобы использовать конкретные имена (не важно как) их нужно знать. Если их не знать, то их и нельзя использовать.
Можно писать код, который делает что-то общее для всех имён. Но тогда и нет смысла в именах как таковых.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539305
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИ что? Для того чтобы использовать конкретные имена (не важно как) их нужно знать. Если их не знать, то их и нельзя использовать.
Можно писать код, который делает что-то общее для всех имён. Но тогда и нет смысла в именах как таковых.

Почему. Вот простой пример. Написать динамический генератор табличных форм.

1. Как создать XML с перечислением полей какие надо отображать - понятно.
2. Как хранить разные поля в БД понятно.
3. Как прочитать поле понятно.

Осталась малость и универсальная мегахрень готова.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539320
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Почему. Вот простой пример. Написать динамический генератор табличных форм.

1. Как создать XML с перечислением полей какие надо отображать - понятно.
2. Как хранить разные поля в БД понятно.
3. Как прочитать поле понятно.

Осталась малость и универсальная мегахрень готова.

А если подумать дальше, кто же этими формами будет пользоваться. То станет понятно, что проще нагенерить классы и по ним писать уже логику. В этом основная вопрос. Сами по себе формы без кода никому не нужны.

На самом деле такими идеями бредили в начале 2000х. Но ни одной из них ещё не выстрелило и лишь не многие все ещё наплаву. Поэтому подбная попытка снова изобрести такой велосипед и на коленке у меня вызывает улыбку.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539326
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПоэтому подбная попытка снова изобрести такой велосипед и на коленке у меня вызывает улыбку.
Может человек курсовую ваяет.
Никто же не говорит, что он новый SAP решил сваять.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539333
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем мне динамика?? То что нужно я уже получил:
1. Коллекция свойств, чтобы вывести их в табличку ,и дать редактировать пользователю.
2. Быстрый доступ по ключу, чтобы проверить все ли свойства у объекта есть, на случай, если в настройках типа добавили еще пару свойств.

Код: java
1.
item.getitemProps().get(itemProp)


Код: java
1.
item.getitemProps().put(itemProp, value)
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539336
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Psolao,

А что потом с этим делать. Расскажите, пожалуйста. Правда интересно.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539340
Psolao
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевBlazkowiczПоэтому подбная попытка снова изобрести такой велосипед и на коленке у меня вызывает улыбку.
Может человек курсовую ваяет.
Никто же не говорит, что он новый SAP решил сваять.

Не курсовая. Простенькая программа для учета компьютерного барахла, для внутренних нужд. Поэтому и набор свойств нужен, потому что у системника, роутера, монитора и чего-то там еще свойства разные.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539342
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PsolaoТаблица свойств нужна, так как у разного типа объекта набор свойств разный. Существует табличка многие-к-многим, где описывается что у Носков есть свойство Аромат и Производитель, а у Водки - Производитель, Крепость и Прозрачность.
И тем не менее, соединение со справочной таблицей необязательно, если внутри объекта наименование свойства имеет признаки ключа (уникальное и не изменяется). Да, это отступление от 3NF в её классическом виде, но зачастую сознательная денормализация может значительно облегчить жизнь разработчика.
При небольшой длине поля "наименование свойства" (скажем, до 30 символов) вполне себе вариант.
...
Рейтинг: 0 / 0
Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
    #38539350
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsolaoНе курсовая. Простенькая программа для учета компьютерного барахла, для внутренних нужд. Поэтому и набор свойств нужен, потому что у системника, роутера, монитора и чего-то там еще свойства разные.
Тогда вот этот ответ, ИМХО, предельно правильный.
15473004
Нет смысла все усложнять.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскажите оптимальную реализацию переменного количества свойств для объекта в Hibenate.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]