Задача стоит в проектировании БД для интернет магазина.
У каждого товара есть набор характеристик (связь многие ко многим разбивается через промежуточную табличку).
У сущности "характеристика" есть кроме 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();
}
}
Комментариев нет:
Отправить комментарий