[백업][가리사니] 가리사니에 작성중 기능을 넣어보자. jpa + ddd 유지보수
ddd, jpa
이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.
서론
다른 사람도 그런지 나만 그런지 알 수는 없지만. 필자는 보통 글 쓸 주제 거리가 생각나면 대충 제목만 써놓고 - 작성중 이런 식으로 달아둔다. 문제는 이 글들이 너무 많다는 것이다.
내가 어떤 주제애 대한 글을 작성했고, 누군가 그 글을 눌렀는데
작성중
딱 이런식이라면 실망감이 클 것이다.
또한 포럼(게시판)에 작성글 투성이라면 보는 사람도 이상할 것이다.
그래서 작성글 기능을 추가해 보려고 한다.
JPA와 DDD로 작성하면 어떤 이점이 있을까?
가리사니의 패키지 구조
도메인 -> 포럼(게시판)이 이런 구조로 되어있다.
필자가 구현하려고 하는것은
- 작성중인 글을 자신의 글이 아닌 경우 리스트에서 표시하지 않는다.
- 자신의 글이 아닌 경우 글의 내용을 볼 수 없게 존재하지 않는 글 처럼 처리한다.
그럼 구현해야할 내용은.
- Topic(게시글)에 작성중임을 나타내는 필드를 추가한다 (DB 테이블에도 추가되어야 한다.)
- New / Edit 시에는 작성중임을 나타내는 필드를 업데이트한다.
- 자신의 글이 아닌 경우 목록 보기시에는 표시되지 않아야 한다.
- 또한 자신의 글인 경우 작성중임을 잘 나타내야 한다.
- 자신의 글이 아닌 경우 상세보기도 보이지 않아야 한다.
1. Topic(게시글)에 작성중임을 나타내는 필드를 추가한다 (DB 테이블에도 추가되어야 한다.)
-- 모두 완성한 다음에 마이그레이션 후 not null 옵션을 주도록 하자.
alter table forum_topic add working bit;
연관된 서비스들
확실히 각 역할별 서비스가 있다 보니 관련된 클래스를 찾는 것이 쉽다.
2. New / Edit 시에는 작성중임을 나타내는 필드를 업데이트한다.
3. 자신의 글이 아닌 경우 목록 보기시에는 표시되지 않아야 한다.
- 또한 자신의 글인 경우 작성중임을 잘 나타내야 한다.
- 쿼리에서 제외하는 방법도 있지만, 작성중 이라는 것 자체가 흔하게 많이 존재하는 것이 아니여서 앱에서 처리해주기로 했다.
이런식으로 작성 중 필터를 더 해준다.
4. 자신의 글이 아닌 경우 상세보기도 보이지 않아야 한다.
마무리
이렇게하면 백 엔드 작업은 완료되었다. (프론트에서는 작성 중일 때 상태만 넘기도록 수정 하면 된다.)
객제지향적(DDD: 필자는 DDD와 OOP를 구분하지 않는다.)인 코딩은 객체간 낮은 의존도의 코드를 짤 수 있다.
소스 그림파일을 많이 첨부한 탓에 조금 조잡해 보이지만…….