본문 바로가기

Dev71

유저 CRUD 코드 예시로 도메인 개념 살펴보기: 도메인 서비스, 리포지토리, 애플리케이션 서비스 도메인 주도 개발 리포지터리이번 글에서는 도메인 서비스, 리포지토리, 애플리케이션 서비스에 대한 개념을 살펴보고, 유저에 대한 CRUD를 구현한 코드까지 살펴보겠다.도메인 서비스도메인 서비스란 무엇인가소프트웨어 개발에서 클라이언트를 위해 무언가를 해주는 객체를 서비스라고 한다. 도메인 서비스란 도메인을 위해 무언가를 해주는 객체로, 값 객체나 엔티티로 구현했을 때 부자연스러운 행동을 담당한다.도메인에 대한 규칙 등 어떠한 처리를 도메인 객체 안에 정의했을 때 잘 들어맞지 않는다는 느낌이 든다면 이를 도메인 서비스로 옮기면 자연스럽게 나타낼 수 있다. 그치만 남용을 할 경우, 데이터와 행위가 단절되며 로직이 흩어질 수 있는데 이는 데이터와 행위를 모아놓는다는 객체 지향 설계의 기본 원칙을 거스를 뿐만 아니.. 2025. 1. 22.
엔티티 - 생애주기를 갖는 객체 엔티티란?엔티티란 도메인 모델을 구현한 도메인 객체를 의미한다. 값 객체와의 차이점은 동일성을 통해 식별이 가능한지에 있다. 사람을 예로 들어 동일성을 이해해보자. 이름이 같다고 해서 두 사람이 동일한 인물이 아니며, 어떤 사람이 이름을 변경한다고 해서 다른 사람이 되지 않는다. 즉, 사람을 객체로 비유해보면 속성과는 별개로 동일성을 지켜주는 무언가가 있다는 것을 알 수 있다. 소프트웨어 시스템에서 일반적으로 엔티티로 구현되는 모델로 유저가 있다. 유저는 속성이 아닌 동일성으로 식별된다. 그리고 흔히 식별자(identity)가 동일성을 판단하는 수단으로 사용된다.엔티티의 성질엔티티의 성질에는 다음 3가지가 있다.가변이다.앞서 살펴본 값 객체는 불변성을 가졌지만, 엔티티는 가변성을 갖는 객체다. 그래서 값.. 2025. 1. 20.
도메인 주도 설계 - 값 객체 도메인 주도 설계도메인 주도 설계란 이용자의 세계와 소프트웨어 구현을 연결 짓는 것이다. 유용한 소프트웨어를 만들려면 이용자의 세계를 이해하고, 그들의 문제를 해결할 수 있는 수단을 제공해야 한다. 기술적인 접근으로만 문제를 접근하면 목적 없는 소프트웨어가 만들어질 위험이 있다.도메인 모델링모델은 현실에 일어나는 사건 또는 개념을 추상화한 개념을 일컫는다. 그리고 이것을 추상화하는 작업을 모델링이라고 한다. 추상화를 할 때 무엇을 남기고 무엇을 버릴지는 도메인에 따라 결정된다.책에서 설명하는 패턴책에서 설명하는 패턴의 순서는 다음과 같으며 순차적으로 다뤄볼 것이다.지식을 위한 패턴값 객체 - 도메인만의 고유한 개념을 값으로 나타내는 패턴엔티티 - 도메인 개념을 나태내기 위한 객체. 동일성으로 식별됨(식별.. 2025. 1. 19.
[ReTool] 테이블에서 행 여러개 입력 및 수정하기 이번에는 테이블을 활용하여 데이터를 추가,수정, 삭제하는 방법을 살펴보도록 하자. 요구사항은 다음과 같다.행을 추가할 수 있다.행을 삭제할 수 있다.저장을 통해 입력한 값들이 저장된다.필수값이 입력되지 않은 값은 저장되지 않는다.저장 후 이어서 행 추가, 삭제, 수정을 할 수 있다.입력 모달을 나가면 데이터는 초기화된다.일반적인 요구사항들이고, 아마 무리없이 구성할 수 있을 것이다. 그리고 위의 기능을 구현하다보면 다음 3가지 이슈를 마주할 것이다.테이블에 데이터 소스가 없으면 컬럼을 지정할 수 없는데?테이블 데이터들에 primarykey가 있어야 수정 기능을 구현할 수 있는데 primarykey를 어떻게 설정하지?데이터를 한번에 여러개 입력하고 싶은데 추가버튼으로는 한개씩밖에 입력이 안되는걸?혹시 이런.. 2025. 1. 13.