#unit_of_work — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #unit_of_work, aggregated by home.social.
-
Паттерн Unit of Work в Python с SQLAlchemy
Unit of Work отслеживает все объекты, которые были загружены в память и изменены в ходе выполнения программы. Он управляет их состояниями и сохраняет изменения в базе данных в конце транзакции. Это делается с использованием сессий, которые действуют как контейнеры для всех изменений. Когда работа завершена, Unit of Work выполняет commit для всех изменений, сохраняя их в базе данных. Если что-то пошло не так, выполняется rollback, и база данных возвращается в состояние до начала транзакции. В данной статье рассмотрим, как реализовать паттерн Unit of Work с использованием SQLAlchemy.
-
Как сменить технологию и не закопаться в рефакторинге: опыт внедрения DDD в проект на FastAPI — Часть 1
Привет, хабравчане! В серии статей расскажу, что такое DDD (domain-driven design) и какие у него преимущества и недостатки. Разберемся, когда применять подход и как сочетать его с FastAPI , популярным ASGI фреймворком на Python. В этой части рассмотрим паттерны проектирования Repository и Unit of Work . С их помощью мы работаем через интерфейсы. Паттерны помогают в разделении кода на слои: основная логика приложения представляется внутренними слоями, а используемые технологии - внешними.
https://habr.com/ru/articles/833720/
#fastapi #ddd #refactoring #repository_pattern #unit_of_work #проектирование #рефакторинг #чистая_архитектура
-
Паттерн Unit of Work в разрезе чистой архитектуры DDD на языке Golang
Всем привет! Недавно мне выпала возможность разработать шаблон сервиса, который можно было бы использовать как для монолитной, так и для микро‑сервисной архитектуры. Шаблон должен был придерживаться принципов Domain‑Driven Design (DDD). В этом процессе, я столкнулся с двумя интересными проблемами: Проблема 1: Сложности обеспечения транзакционности базы данных При разработке сервисов, часто возникает неотъемлемая потребность в использовании транзакций базы данных для обеспечения целостности данных. Однако, при попытке интегрировать транзакционную логику в традиционные подходы, столкнулся с трудностями. Связывание транзакционной логики с логикой слоя базы данных оказалось нетривиальным и привело к нарушению принципов разделения ответственности. Это, в свою очередь, сказалось на тестировании и поддержке кода. Проблема 2: Нарушение изолированности слоя В попытке решить первую проблему, некоторые разработчики переносят работу с транзакциями на уровень слоя приложения, чтобы избежать прямой зависимости от базы данных. Однако, такой подход, несмотря на его обоснование, может нарушить изолированность слоев и противоречить принципам DDD и чистой архитектуры. Это, в конечном итоге, затрудняет поддержку приложения и усложняет его масштабирование. Эти две проблемы стали отправной точкой для исследования применения паттерна Unit of Work и его роли в обеспечении надежности и консистентности данных в контексте Golang и DDD. В статье я расскажу о своем подходе к решению этих задач.
https://habr.com/ru/articles/784186/
#ddd #unit_of_work #arhitectura #архитектура #архитектура_приложений #голанг #golang #hexagon #гексогональная_архитектура