[백업][가리사니] 가리사니에 작성중 기능을 넣어보자. jpa + ddd 유지보수
ddd, jpa

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

서론

다른 사람도 그런지 나만 그런지 알 수는 없지만. 필자는 보통 글 쓸 주제 거리가 생각나면 대충 제목만 써놓고 - 작성중 이런 식으로 달아둔다. 문제는 이 글들이 너무 많다는 것이다.

내가 어떤 주제애 대한 글을 작성했고, 누군가 그 글을 눌렀는데

작성중

딱 이런식이라면 실망감이 클 것이다.

또한 포럼(게시판)에 작성글 투성이라면 보는 사람도 이상할 것이다.

그래서 작성글 기능을 추가해 보려고 한다.

JPA와 DDD로 작성하면 어떤 이점이 있을까?

가리사니의 패키지 구조

설명

도메인 -> 포럼(게시판)이 이런 구조로 되어있다.

설명

필자가 구현하려고 하는것은

  1. 작성중인 글을 자신의 글이 아닌 경우 리스트에서 표시하지 않는다.
  2. 자신의 글이 아닌 경우 글의 내용을 볼 수 없게 존재하지 않는 글 처럼 처리한다.

그럼 구현해야할 내용은.

  1. Topic(게시글)에 작성중임을 나타내는 필드를 추가한다 (DB 테이블에도 추가되어야 한다.)
  2. New / Edit 시에는 작성중임을 나타내는 필드를 업데이트한다.
  3. 자신의 글이 아닌 경우 목록 보기시에는 표시되지 않아야 한다.
    1. 또한 자신의 글인 경우 작성중임을 잘 나타내야 한다.
  4. 자신의 글이 아닌 경우 상세보기도 보이지 않아야 한다.

1. Topic(게시글)에 작성중임을 나타내는 필드를 추가한다 (DB 테이블에도 추가되어야 한다.)

설명

-- 모두 완성한 다음에 마이그레이션 후 not null 옵션을 주도록 하자.
alter table forum_topic add working bit;

연관된 서비스들

확실히 각 역할별 서비스가 있다 보니 관련된 클래스를 찾는 것이 쉽다. 설명

2. New / Edit 시에는 작성중임을 나타내는 필드를 업데이트한다.

설명

3. 자신의 글이 아닌 경우 목록 보기시에는 표시되지 않아야 한다.

  • 또한 자신의 글인 경우 작성중임을 잘 나타내야 한다.
  • 쿼리에서 제외하는 방법도 있지만, 작성중 이라는 것 자체가 흔하게 많이 존재하는 것이 아니여서 앱에서 처리해주기로 했다.

설명

이런식으로 작성 중 필터를 더 해준다.

4. 자신의 글이 아닌 경우 상세보기도 보이지 않아야 한다.

설명

마무리

이렇게하면 백 엔드 작업은 완료되었다. (프론트에서는 작성 중일 때 상태만 넘기도록 수정 하면 된다.)

객제지향적(DDD: 필자는 DDD와 OOP를 구분하지 않는다.)인 코딩은 객체간 낮은 의존도의 코드를 짤 수 있다.

소스 그림파일을 많이 첨부한 탓에 조금 조잡해 보이지만…….