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

Всем привет. есть вопрос на счет транзакций и чистой архитектуры. у меня

есть слой service и есть repository.

как лучше реализовать транзакционность запросов к бд?
Допустим у меня есть методы: Insert() и List().

1) В сервисном слое написать что то типа s.db.BeginTransaction() и внунтри вызывать методы Insert(tx), List(tx).

2) Спрятать весь этот функционал внутри репозитория?

3 ответов

26 просмотров
Alisher- Автор вопроса

Это плохо когда репозиторий знает слишко много о реализации того или иного метода, поэтому я рассматриваю и первой варик

Alisher
Это плохо когда репозиторий знает слишко много о р...

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

Евгений Омельченко
Если транзакции базы данных вы используете, чтобы ...

При переходе на другой сторадж будет транзакция которая ничего не делает. Другой вопрос, что в принципе уже не будет возможность перехода на другой сторадж, который не поддерживает транзакции

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта