게시판 만들기 프로젝트 : 설계, 코딩 및 문제해결

김재현·2023년 11월 9일
0

TIL

목록 보기
26/88
post-thumbnail

게시판 만들기

  • 프로젝트명: "게시판 만들기"
  • 프로젝트 소개: 게시글을 쓰거나 지울 수 있는 게시판 프로그램입니다.
  • 사용 기술: #SpringBoot #JPA #MySQL
    GitHub: https://github.com/k-jaehyun/Board

기능

  • 게시글 작성 기능
  • 선택한 게시글 조회 기능
  • 게시글 목록 조회 기능
  • 선택한 게시글 수정 기능(본인만 수정 가능)
  • 선택한 게시글 삭제 기능(본인만 삭제 가능)

스케치(피그마)

사실 서버를 만든 후에 POSTMAN으로 작업 할 예정이라 HTML은 만들 필요가 없어, 머릿속의 내용만 대충 구상해봤다.

>스케치링크


유스케이스 다이어그램

시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로 사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여주는 것이다.

앞서 DAsP 공부를 하며 유스케이스다이어그램, ERD를 익혔기에 어려움은 없었다.

시스템 내에 엔터티라 할 수 있는게 게시판 밖에 안보여서...
그 틀에서 조금 벗어나, 시스템에 대한 이해를 돕기 위한 툴로써 2개를 만들어내봤다.

>유스케이스 다이어그램 링크

  1. 내부 로직을 그려봤다.
    컨트롤러를 통하여 사용자가 게시판에 접근한다. 이 때 DB의 데이터나 내부 로직에 직접 접촉하는 것이 아닌, RequestDto와 ResponseDto를 통해 접촉한다.
    따라서 보안성과 안전성이 향상 시킬 수 있다.
  2. 게시글 기능을 그려봤다.
    다이어그램은 각 기능들의 특성을 보다 잘 이해하도록 도와준다.

ERD (Lucid)

Entity: 사람, 물체, 개념 (계정)
Relationship: E-E 연결해주는 관계
Attribute: 사람-키 몸무게 성별

엔터티가 게시글밖에 없기에 이런게 그려진다.


API명세 작성 (Postman)

포스트맨을 추천받아 써봤는데, 이거 정말 편하고 깔끔하다!


왼쪽에 기능별로 만들고, 그 안에 주소값 설정, 값을 어떻게 넣을지 등을 설정했다.

물론 이후에 여기서 서버가 잘 작동되는지 테스트도 했다!

  • 게시글 상세 조회(GET)에서 ID로 하나의 게시글을 조회해야하기 때문에 @PathVariable를 사용하여 ID를 링크에 전달했다.
  • POST, PUT의 Body 테이터 형식은 @RequestBody을 이용하여 JSON으로 통일했다.
  • 수정(PUT)에서는 사용자가 게시글의 ID를 몰라도 게시글이 잘 선택될 수 있도록, 클릭시에 게시글의 ID값이 @PathVariable로 링크에 첨부되게끔 설계했다.
  • 삭제(DELETE)에서는 password만 입력 후 ID와 함께 @PathVariable 로 보냈다.

본격적인 코딩

RESTful

RESTful한 코드를 위해 설계했던데로, Controller,Service, Repository를 구분했다.
또한 Dto도 잊지 않고 사용했다.

설계가 잘 된 덕분에 깔끔하게 기능을 나눠 만들 수 있었다.

막혔던 부분과 문제해결

1. DB 설정 문제


맨 윗줄의 board가 memo로 되어있어서 쿼리문을 memo DB로 날리고 있었다. 하하!
이것때문에 DB에 값이 제대로 저장되지 않으면서 뭐가 문제인지 찾아 헤멨다.

2. Entity Id 생성 오류

게시글 생성시 ID가 생성되지 않는다는 오류.

검색! 서칭!!

정리해보자면,

IDENTITY: id값을 DB에 들어갈 때 생성 -> 영속성 컨텍스트 이용 못함 -> 이걸 해결하려고 manager에게 탑승 시점에 DB에 쿼리 날려서 id값을 가져와서 사용. -> 하지만 id값 null이라서 오류가 났던 것.

이후 Identity를 빼니까 잘 작동. -> 하지만 이상한 테이블이 생겼음.

튜터님께 여쭤보니 IDENTITY뿐만 아니라 TABLE, SEQUENCE, UUID, AUTO 가 더 있다.

TABLE은 뭐가 잘 안되면 테이블을 추가해주고, AUTO는 최적화시켜준다.

일단 AUTO로 바꾸니 잘 작동이 되었는데,
AUTO의 단점은... 게시글 생성시, 서버를 닫았다가 다시 열어서 만들면 id값이 일정하게 1,2,3 이렇게 설정되는 것이 아니라 1,2,52,53,54,102 이런식으로 50씩 널뛰기한다.

이건 좋지 않은 버그의 느낌이 물씬 풍기기 때문에 더 공부해서 고쳐봐야겠다.
튜터님 의견은 DB설정의 문제인데, 그쪽도 다시 확인해봐야겠다.


관련 포스팅

Following Post

profile
I live in Seoul, Korea, Handsome

0개의 댓글