Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
 Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Разрабатываю проект. В нем есть добавление своих сайтов. У сайта есть настройки. На данный момент остановился на настройках виджета (Это виджет онлайн чат поддержки). И вот стал вопрос. Как хранить это дело? я рассматриваю или отдельные сущности в бд и в java или же в сущности настроек сайта писать json со всеми данными? Первый вариант мне кажется грамоздким для бд ибо это придется грузить каждый раз когда человек заходит на сайт владельца где собственно и стоит этот виджет. А вот с json-ом вижу беду в том что есть риск того-то что чего-то не будет хватать + провалидировать такую структуру будет труднее чем объект в джаве. Прилагаю скрин настроек виджета - Их довольно таки много. В json-е удобно хранить такое, но есть и минусы.

Что скажете?

К сообщению приложен файл. Размер - 57Kb
11 фев 19, 13:26    [21806332]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop
Разрабатываю проект. В нем есть добавление своих сайтов.
и не смотрел как у конкурентов?
Т.к. непонятно, на тройки конструктора сайта или готового сайта у заказчика.
11 фев 19, 13:41    [21806357]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123, а как я гляну сервак конкурентов? фронт я то глянул, но больше инфы он не даст мне.

Это не конструктор сайта или сайтов. Это настройки виджета, который клиент будет подключать себе на сайт.
11 фев 19, 13:44    [21806365]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123, то бишь схема такая. Регается клиент. Добавляет свой сайт. Мы проверяем что это реально его сайт. Выдаем ему скрипт для виджета. Он (или программисты) вставляет код в html или что там у него и используется чат. И вот эти вот настройки отвечают за сам виджет этот - цвета, расположение, размеры и т.д.
11 фев 19, 13:46    [21806368]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop
я рассматриваю или отдельные сущности в бд и в java или же в сущности настроек сайта писать json со всеми данными?
сущность. Причем разные у разных типов сайта. Как в экселе у ячейки свои свойства, а у строки свои.
11 фев 19, 13:48    [21806372]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop
Выдаем ему скрипт для виджета. Он (или программисты) вставляет код в html или что там у него и используется чат. И вот эти вот настройки отвечают за сам виджет этот - цвета, расположение, размеры и т.д.
ну дак он в скрипте проставит?
Настройки кому?
11 фев 19, 13:53    [21806382]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop,
У меня профиле сайт. Давай скрипт.
11 фев 19, 13:55    [21806384]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123
ну дак он в скрипте проставит?
Настройки кому?


Нет, нет. Он настраивает у нас. То бишь вся инфа хранится в нашей бд. А скрипт служить только для подгрузки скрипта с виджетом. Сам виджет идет на сервак за настройками по ресту.
11 фев 19, 14:04    [21806400]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123
Tsyklop,
У меня профиле сайт. Давай скрипт.

Этого еще нет. я только делаю.
11 фев 19, 14:05    [21806405]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123
сущность. Причем разные у разных типов сайта. Как в экселе у ячейки свои свойства, а у строки свои.

Правильно ли я тебя понял? настройки виджета это отдельная сущность, в которой есть другие сущности? к примеру есть настройки цветовой гаммы. Там поле больше 10. Соответственно я это выношу в отдельную сущность и связываю с сущностью настроек виджета?
11 фев 19, 14:13    [21806415]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop,

Да. Получается что вся БЛ это показ фрейма чата.
Это не ИС учетка и Модель будет показ всех фреймов всяких разных.
Напр. Если не заплатил, то показать красным....
Это бизнес логика и вполне можно в таблы распихать по полям через ОРМ.
Так это основа вашей ИС.
11 фев 19, 14:44    [21806459]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
У меня получилось вот так.

Скажите пожалуйста, насколько это хорошо или же плохо. Критика приветствуется!

Спасибо!

@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "widgetSettings")
@EqualsAndHashCode(callSuper = true)
public class WidgetSettingsEntity extends AbstractEntity {

    @JoinColumn(name = "widgetCommonSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetCommonSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetCommonSettingsEntity common;

    @JoinColumn(name = "widgetSizeSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetSizeSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetSizeSettingsEntity widget;

    @JoinColumn(name = "widgetButtonSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetButtonSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetButtonSettingsEntity widgetButton;

    @JoinColumn(name = "widgetColorsSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetColorsSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetColorsSettingsEntity colors;

    @JoinColumn(name = "widgetCallOrderButtonSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetCallOrderButtonSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetCallOrderButtonSettingsEntity callOrderButton;

    @JoinColumn(name = "widgetOperatorEvaluationSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetOperatorEvaluationSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetOperatorEvaluationSettingsEntity operatorEvaluation;

    @JoinColumn(name = "widgetRecallsSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetRecallsSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetRecallsSettingsEntity widgetRecalls;

    @JoinColumn(name = "widgetRecallSendFormSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetRecallSendFormSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetRecallSendFormSettingsEntity widgetRecallSendForm;

    @JoinColumn(name = "widgetNotificationsSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetNotificationsSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetNotificationsSettingsEntity widgetNotifications;

    @JoinColumn(name = "widgetOnlineModeSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetOnlineModeSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetOnlineModeSettingsEntity widgetOnlineMode;

    @JoinColumn(name = "widgetPersonalDataFormOnlineModeSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetPersonalDataFormOnlineModeSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetPersonalDataFormOnlineModeSettingsEntity widgetPersonalDataFormOnlineMode;

    @JoinColumn(name = "widgetOfflineModeSettingsId", nullable = false, updatable = false)
    @OneToOne(targetEntity = WidgetOfflineModeSettingsEntity.class, fetch = FetchType.EAGER, optional = false)
    private WidgetOfflineModeSettingsEntity widgetOfflineMode;

    @OneToOne(fetch = FetchType.LAZY, targetEntity = SiteEntity.class, optional = false)
    @JoinColumn(name = "siteId", nullable = false, updatable = false)
    private SiteEntity site;

}
1 мар 19, 01:11    [21822306]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Тут еще такой момент. На некоторых табах (скрин в первом посте) есть кастомные поля. на данный момент я сделал отдельными таблицами. Насколько это гуд? у меня получилось 3 таблица с 3 одинаковыми полями, но с разной привязкой к сущности, к которой она относится.
1 мар 19, 01:15    [21822308]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
Tsyklop
Скажите пожалуйста, насколько это хорошо или же плохо.

Вы планируете расширять таблицу БД на столько столбцов, сколько у вас виджетов в программе? Это охрененно хорошо, это самый прогрессивный подход.
1 мар 19, 05:40    [21822335]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop,
Так?
Код widgetColorSettingsId userLogin
34 123 Petro

Тогда продолжи пример Модели в базе.
Его согласовывают в ветке Разработка бд без java
1 мар 19, 07:04    [21822355]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop
Тут еще такой момент. На некоторых табах (скрин в первом посте) есть кастомные поля. на данный момент я сделал отдельными таблицами. Насколько это гуд? у меня получилось 3 таблица с 3 одинаковыми полями, но с разной привязкой к сущности, к которой она относится.
ничего не понятно. Нужны скрины со стрелочками, пояснениями и т.д.
Не вникая, таблица это сущность. Как у тебя поле сущносиь я не понял.
И чем отличаются кастомные поля от других напиши по русски.
1 мар 19, 07:11    [21822357]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Лысый дядька
Вы планируете расширять таблицу БД на столько столбцов, сколько у вас виджетов в программе? Это охрененно хорошо, это самый прогрессивный подход.

это сарказм?
1 мар 19, 11:26    [21822508]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123
ничего не понятно. Нужны скрины со стрелочками, пояснениями и т.д.
Не вникая, таблица это сущность. Как у тебя поле сущносиь я не понял.


В том коде что я привел - одно поле класса это одна таблица. Или же сущность отдельная. Между ними связь.

Petro123
И чем отличаются кастомные поля от других напиши по русски.


поля которые можно добавить самому. то бишь не жестко забитые поля мной, а юзер сам добавил свои поля.
1 мар 19, 11:34    [21822520]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
Tsyklop
это сарказм?

Блин, вот ты правда думаешь, что именно так проектируют базы данных?
Твою таблицу можно свести к трем столбцам - НазваниеВиджета, НазваниеПараметра, Значение.
1 мар 19, 11:57    [21822565]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Лысый дядька
Блин, вот ты правда думаешь, что именно так проектируют базы данных?
Твою таблицу можно свести к трем столбцам - НазваниеВиджета, НазваниеПараметра, Значение.


Виджет один. Как бороться тогда с тем что настроек может не быть? то бишь получается так что некоторых параметров может не быть в это таблице. как быть тогда?
1 мар 19, 12:00    [21822571]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop,
Сначала Модель. Потом ГУИ с твоими скринами и полями.
Модель я показал как делают - маппинг + ТАБЛИЦЫ НАГЛЯДНО.
Второе ты не сделал. Делай.
1 мар 19, 12:10    [21822589]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
https://www.google.com/search?q=модель бд&newwindow=1&client=tablet-android-huawei&prmd=ivn&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjc6NfCzODgAhXs0qYKHZRaC1oQ_AUoAXoECA4QAQ&biw=962&bih=601
1 мар 19, 12:11    [21822590]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Tsyklop
поля которые можно добавить самому. то бишь не жестко забитые поля мной, а юзер сам добавил свои поля.
тут надо думать, т.к. Юз кейс их создания ты не предоставил.
Если он в скрипте делает, то пусть в скрипте и сидят. У тебя в БЛ не учавствуют.
1 мар 19, 12:15    [21822597]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123
тут надо думать, т.к. Юз кейс их создания ты не предоставил.
Если он в скрипте делает, то пусть в скрипте и сидят. У тебя в БЛ не учавствуют.


не понял. в каком скрипте?

Вот пример настроек с полями

К сообщению приложен файл. Размер - 66Kb
1 мар 19, 12:28    [21822613]     Ответить | Цитировать Сообщить модератору
 Re: Хранение настроек сайта  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1024
Petro123
Tsyklop,
Сначала Модель. Потом ГУИ с твоими скринами и полями.
Модель я показал как делают - маппинг + ТАБЛИЦЫ НАГЛЯДНО.
Второе ты не сделал. Делай.


я не могу с h2 сделать модель.
1 мар 19, 12:29    [21822616]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
Все форумы / Java Ответить