@oop_ru

Страница 663 из 785
Артур Евгеньевич
01.06.2018
16:54:11
Hell
01.06.2018
16:54:27
а что разве нет?
пример, что да

Артур Евгеньевич
01.06.2018
16:54:45
пишешь интерфейс репозитория, и в его реализации пишешь любую сложную логику

Google
Hell
01.06.2018
16:55:34
Repo не делает никаких соединений

Артур Евгеньевич
01.06.2018
16:55:40
но вообще да это мутная херня, поэтому в случае несокльких БД особенно разных форматов лучше event consistency

маппер инджектим в репу и погнали

Hell
01.06.2018
16:56:27
Потому что открытие сессии это не есть задача репозитория

Артур Евгеньевич
01.06.2018
16:57:16
или конекшн фактори

Hell
01.06.2018
16:57:52
или конекшн фактори
это тоже есть

ведь Named это антипаттерн

Меня разраб SimpleInjector послал с этой просьбой

Артур Евгеньевич
01.06.2018
16:59:25
Не понял ты о чем

Google
Артур Евгеньевич
01.06.2018
16:59:36
Вот есть GiftRepo - это интерфейс

и лежит он в доменно слое, содержит только красивые названия методов

Артур Евгеньевич
01.06.2018
17:00:40
А есть низкоуровневая фигня из Infrastrucutre - GiftTarantoolRepo, GiftMysqlRepo - и т.д - туда прокидываем коненкшн или фабрику коннекшнов

Aleh
01.06.2018
17:00:41
он подерживает 2 и более базы данных?
Какое угодно количество, потому что вообще не привязан к понятию базы

Артур Евгеньевич
01.06.2018
17:02:10
Также можно создать условный GiftComplexDbRepo - и в нем уже работать с чем хочешь, обеспечивая транзацкционность на стороне приложения а не бд(что в распределенных системах вообещ невозможно) хотя вроед у моськи что то видел про транзакции в рамках одного хоста

И?)
Зачем нам UoW при 1 действии?

f4rt~
01.06.2018
17:03:12
Зачем нам UoW при 1 действии?
https://github.com/doctrine/doctrine2/issues/5550

крч вот твой goal, да?

Артур Евгеньевич
01.06.2018
17:03:22
да даже не при 1- он тоже может быть не нужен, просто в ряде случаев до флуша не доходим в случае ошибки, и все отменяется

https://github.com/doctrine/doctrine2/issues/5550
лол там про моего начальника предыдущего)

щас прочитаю

земля круглая ебанаврот

Hell
01.06.2018
17:08:00
Какое угодно количество, потому что вообще не привязан к понятию базы
как ты будешь строить граф зависимостей до сессии

Артур Евгеньевич
01.06.2018
17:09:59
https://github.com/doctrine/doctrine2/issues/5550
Получается типо того. Только это не обязательно TableGateway

https://github.com/doctrine/doctrine2/issues/5550
и что в итоге это плохо считается?

Артур Евгеньевич
01.06.2018
19:32:01
Лол, а если дошло, то что делать?)
все зафлушится и сохранится!

Google
Aleh
01.06.2018
19:32:25
Артур Евгеньевич
01.06.2018
19:33:03
Короче, просто попробуй пожить без uow, может он тебе действительно не нужен
в текущем проекте в существенной части репозиториев его нет...а там где есть ка кобычная зависимость идёт

Hell
01.06.2018
19:33:05
Граф зависимостей чего?
https://github.com/simpleinjector/SimpleInjector/issues/531

Артур Евгеньевич
01.06.2018
19:33:20
короче я так понял что EM это тимо отдекорированный репозиторий

Hell
01.06.2018
19:33:55
Найди там ошибку в моем ДНК, когда я выбирал эти паттерны

Двое разрабов SI не в курсе

Артур Евгеньевич
01.06.2018
19:35:01
Как ты добаляешь сущность? А как получаешь?
получаю методом find по id например

добавлюя через new а потом пизаю ее в метод save()

Aleh
01.06.2018
19:35:42
Артур Евгеньевич
01.06.2018
19:36:03
да

Sergey
01.06.2018
19:36:53
да
https://www.slideshare.net/Yaboomaster1/save-repository-from-save

Aleh
01.06.2018
19:36:54
да
Так себе, советую подумать над переименованием в add или типа того

Артур Евгеньевич
01.06.2018
19:37:14
да точно add мы назыаем

save часто как приватный метод

Sergey
01.06.2018
19:38:40
щас скажу точно
главное что бы там небыло flush

потому что если у тебя там flush для глобального UoW.... то это так себе идея. сомневаюсь что у тебя круто изолированный агрегат

Valentin
01.06.2018
19:41:14
Ребятки, а посоветуйте годный материал по доктрине. Концепции, практики и т.д. Кратко и по делу. Помимо мануала. Спасибо

Google
Артур Евгеньевич
01.06.2018
19:41:39
потому что если у тебя там flush для глобального UoW.... то это так себе идея. сомневаюсь что у тебя круто изолированный агрегат
КОгда норм агрегат есть, то у нас обычно на событиях все. А в репозитории метод save в котормо вызывается EventIterator::forEachEvent - и в нем персистнс для каждого события описан, я вот не уверен что это правильно. Как вы делаете?

Valentin
01.06.2018
19:42:10
@fes0r danke

Admin
ERROR: S client not available

Hell
01.06.2018
19:43:44
https://stackoverflow.com/a/48573496/444079

Sergey
01.06.2018
19:51:43
КОгда норм агрегат есть, то у нас обычно на событиях все. А в репозитории метод save в котормо вызывается EventIterator::forEachEvent - и в нем персистнс для каждого события описан, я вот не уверен что это правильно. Как вы делаете?
мы по postFlush мутим а там где надо персистить события все prooph делает. Но если тебя интересует как бы мы чисто на доктрине в рамках транзакции персистили бы ивенты - это по preFlush какому

достаем сущности из UoW, ищем корень агрегата и достаем из него ивенты

Roman
03.06.2018
16:26:13
в чем отличие Table Data Gateway (Шлюз к данным таблицы) и Data Mapper () можно в крации пояснить?

Enterpise
03.06.2018
16:26:36
ППКС

Roman
03.06.2018
16:27:22
єто слишком кратко

как по мне они обое играют роль шлюза в работе с таблицой

Hell
03.06.2018
16:58:03
вы так говорите, как будто все поняли и не согласны с высказыванием по ссылке

Sergey
03.06.2018
16:58:53
что такое коренЬ агрегата
представь себе агрегат как дерево объектов. И у этого дерева должен быть корень.

и через этот корень ты должен взаимодействовать со всем остальным деревом. Точнее корень как бы скрывает что там есть кто-то еще.

в чем отличие Table Data Gateway (Шлюз к данным таблицы) и Data Mapper () можно в крации пояснить?
Data Mapper о том как мэпить данные. Table gateway о том как ходить в базу. Они друг другу даже не конкуренты

Evgeniy
03.06.2018
17:00:20
в чем отличие Table Data Gateway (Шлюз к данным таблицы) и Data Mapper () можно в крации пояснить?
table data gateway мапит таблицы в объекты и обратно (1 таблица 1 объект) и оно больше привязано к структуре data mapper мапит реляционную структуру в сущности и обратно (1 сушность может быть в нескольких таблицах)

Google
Evgeniy
03.06.2018
17:01:35
строго этого нет, тут ты прав

Sergey
03.06.2018
17:01:48
https://www.martinfowler.com/eaaCatalog/tableDataGateway.html

https://www.martinfowler.com/eaaCatalog/dataMapper.html

Evgeniy
03.06.2018
17:01:57
только хотел эту же ссылку дать

Sergey
03.06.2018
17:02:22
ну то есть data mapper именно мэпит, а TableGateway просто скрывает SQL

то есть в table gateway спокойно можно разместить incrementCounter а в data mapper надо что бы объект, на который мы мэпим, умел со счетчиками работать. А мэппер бы просто мэпил.

Evgeniy
03.06.2018
17:06:18
ну table gateway как бы говорит есть table и есть gateway (шлюз доступа туда)

есть некая сущность которая по структуре соответсвует строке (обычно)

это все очень упрощенно

в datamapper сущность не обязана соответствовать строке там чуть другое)

Sergey
03.06.2018
17:07:50
ну table gateway как бы говорит есть table и есть gateway (шлюз доступа туда)
ну одна там таблица или больше скрыто за интерфейсом. Идея в том что гейтвей сам с данными работает, и ты просто туда запихиваешь весь SQL. А мэппер сложнее поскольку подразумевается что вся работа с данными через объектную модель идет

Evgeniy
03.06.2018
17:08:06
да это я понимаю

Страница 663 из 785