212 похожих чатов

Всем привет, продолжаются мои похождения по миру ООП. Вот есть паттерн

репозиторий. Это абстракция над персистансом.

Пример условной задачи: есть набор сущностей, у них соответсвующие поля и связи. Возмем для примера.. Что там берут для примера всегда?

Возьмем Event, у него есть Country. Связь m2o.

Иногда хочется создать Event с Country вместе, а иногда — сначала Country, а затем Event.

Кто как считает:
— Должен ли репозиторий работать только с одной сущностью и не знать ничего про другие? Если да, то как быть тогда со связами?
— Данные какого формата из внутреннего слоя должен принимать репозиторий? DTO/POXO или обьекты БЛ?
— Какого формата во внешний слой должен возвращать репозиторий? DTO/POXO или сначала он должен воссаздать обьекты из данных персистанса и только затем передать во внутренний слой?

И в целом расскажите что вы думаете по поводу всего этого, что почитать куда сходить.

Исходная задача: инкапсулировать работу с персистансом за абстракцией, что бы не смешивать ее с БЛ во внутреннем слое.

20 ответов

11 просмотров

А причём сохранение здесь?

"findProductsByCustomersThisYear - отдельный сервис" отдельный сервис где? domain service? "репозиторий это не гейтвей к табличкам в базе" т.е. мы можем сделать отдельно гейтвей и репозиторий у которых будет по сути один и тот же код работы с табликами в бд (просто в репозитории персисентс домейн сущностей, а в гейтвее более общие запросы)?

✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
"findProductsByCustomersThisYear - отдельный серви...

а где хочешь. Например интерфейс может быть определен во view (там где нам нужна зависимость) а реализация в инфраструктуре. Но при этом все это просто три файлика в папке (потому что слои не папки). > т.е. мы можем сделать отдельно гейтвей и репозиторий у которых будет по сути один и тот же код работы с табликами в бд (просто в репозитории персисентс домейн сущностей, а в гейтвее более общие запросы)? там не будет "один и тот же код" так как скорее всего структуры данных для UI и для бизнес логики будут различаться. Если они у тебя не различаются - значит либо чо-то в декомпозиции не так либо у тебя тупой круд и че ты там вообще выпендриваешься со своими слоями.

✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
имею ввиду что это ок будет если формировать запро...

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

Неа, в этом разница между регистром и стором

Sergey P
Неа, в этом разница между регистром и стором

вставлю 5 копеек. есть 2 типа репозиторией collection like и storage like, первый может только дай и положи, а второй еще и сохрани

Денис Давыдов
вставлю 5 копеек. есть 2 типа репозиторией collect...

Вот второе не репозиторий) это сторадж или гейтвей

Sergey P
Вот второе не репозиторий) это сторадж или гейтвей

почему нет? никогда не понимал разницы. как определить эту границу, что это является чем-то, а это не является

✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
а в чем разница между "положи" и "сохрани"?

под положи я имею ввиду коллецию, массив обычный или еще что нибудь, чтобы можно потом было "дай". а сохрани это уже сходи в базу.

Зачем тебе класть то что там уже есть

Сырые запросы и погнали). Имеется ввиду для выборок

Не понял при чём тут сваггер. Проблема в том, что с сырыми SQL-запросами будет резал-сет, который надо ещё обработать прежде чем из него получится красивая структура с вложенными объектами.

Nikolay Underground
Сырые запросы и погнали). Имеется ввиду для выборо...

достаешь вторую карту из рукава - спецификации 😈

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Всем привет. Нужна платная консультация от тех, кто сталкивался с октябрём в кластере или шарит оч хорошо в цмс. Проблема следующая: после переноса в кластер октябрь начал ...
wl
8
Карта сайта