프로그래머스 스진초 과제를 진행하면서 작성한 내용입니다.
DDD는 도메인 주도 설계를 의미하는데, 소프트웨어가 다루는 도메인과 비즈니스 로직을 중심으로 설계하는 방식이다.
-> 소프트웨어 시스템에서 사용되는 모든 개념과 동작을 도메인 모델로 표현
여기서 도메인은 어떠한 세부 분류의 상위분류(대분류)를 말한다.
쉽게말해, 사용자가 받는 서비스의 큰 단위나 유사한 업무(카테고리)의 집합을 의미한다.
예를 들어, 배달 애플리케이션에서의 도메인은 아래와 같이 예시를 들 수 있다.
따라서, DDD는 '비즈니스 Domain 별로 나누어 설계하는 방식' 을 의미한다.
데이터베이스의 구조(테이블, 컬럼, 제약조건 등) 와 쿼리를 중심으로 설계하는것을 의미한다. 데이터베이스와 관련된 요구사항을 먼저 정의하고, 데이터베이스 스키마를 설계한 후, 이를 기반으로 기능을 구현하는 방식이다.
DDD
: 도메인 모델링을 통해 객체를 생성하고, 레포지토리를 통해 데이터베이스에 저장
// 학생(Student) 엔티티 조회
Student student = studentRepository.findById(1);
// 학생(Student) 엔티티 추가
Student newStudent = new Student(2, "홍길동", 2);
studentRepository.save(newStudent);
SQL 중심 설계
: SQL 중심 설계에서는 SQL 쿼리를 직접 작성하여 데이터베이스를 조작
-- 학생(Student) 테이블 조회
SELECT *
FROM Student
WHERE id = 1;
-- 학생(Student) 테이블에 새로운 학생 추가
INSERT INTO Student(id, name, grade)
VALUES(2, '홍길동', 2);
참고
https://happycloud-lee.tistory.com/94
https://dev-coco.tistory.com/166