Страницы

Поиск по вопросам

понедельник, 20 мая 2019 г.

Правильный тип для String int double boolean

Задача стоит в проектировании БД для интернет магазина.
У каждого товара есть набор характеристик (связь многие ко многим разбивается через промежуточную табличку). У сущности "характеристика" есть кроме id еще String name и ??? value
Вопрос в том, какой лучше тип выбрать для value ?? пока склоняюсь к типу String, в который можно писать все вышеперечисленные типы. Еще есть мысли по поводу не заморачиваться и написать туда Object или Serializible.
С точки зрения проектирования какое решение будет правильнее?
Spring Boot (Spring JPA)


Ответ

Еще есть мысли по поводу не заморачиваться и написать туда Object или Serializible.
А заморочиться придется...
Это ровно та задача, которая стоит перед любым разработчиком универсальной структуры данных. Путь известен и проторен не одним десятком прогеров, включая и меня самого. Основные положения:
Типизация (без него никуда), с основными типами: целое, с плавающей точкой, булевая, дата, строка. Ну может еще что-то. Реализация типа на уровне класса
Если подробнее то примерно так (простейшая реализация для двух типов строка и целое число):
abstract class MyType { abstract void setValue(int value); abstract void setValue(String value); abstract String getValue(); } class MyTypeString extends MyType { private String valueString=null;
@Override void setValue(int value) { valueString=new StringBuilder().append(value).toString(); }
@Override void setValue(String value) { valueString=value; }
@Override String getValue() { return value; } }
class MyTypeInt extends MyType { private Integer valueInt=null;
@Override void setValue(int value) { valueInt=value; }
@Override void setValue(String value) { try { int val=Integer.parseInt(value); valueInt=new Integer(val); } catch(Exception ex) { valueInt=null; } }
@Override String getValue() { return new StringBuilder().append(valueInt).toString(); } }

Комментариев нет:

Отправить комментарий