- 프로젝트명: "게시판 만들기"
- 프로젝트 소개: 게시글을 쓰거나 지울 수 있는 게시판 프로그램입니다.
- 사용 기술: #SpringBoot #JPA #MySQL
GitHub: https://github.com/k-jaehyun/Board
사실 서버를 만든 후에 POSTMAN으로 작업 할 예정이라 HTML은 만들 필요가 없어, 머릿속의 내용만 대충 구상해봤다.
시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로 사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여주는 것이다.
앞서 DAsP 공부를 하며 유스케이스다이어그램, ERD를 익혔기에 어려움은 없었다.
시스템 내에 엔터티라 할 수 있는게 게시판 밖에 안보여서...
그 틀에서 조금 벗어나, 시스템에 대한 이해를 돕기 위한 툴로써 2개를 만들어내봤다.
Entity: 사람, 물체, 개념 (계정)
Relationship: E-E 연결해주는 관계
Attribute: 사람-키 몸무게 성별
엔터티가 게시글밖에 없기에 이런게 그려진다.
포스트맨을 추천받아 써봤는데, 이거 정말 편하고 깔끔하다!
왼쪽에 기능별로 만들고, 그 안에 주소값 설정, 값을 어떻게 넣을지 등을 설정했다.
물론 이후에 여기서 서버가 잘 작동되는지 테스트도 했다!
RESTful한 코드를 위해 설계했던데로, Controller,Service, Repository를 구분했다.
또한 Dto도 잊지 않고 사용했다.
설계가 잘 된 덕분에 깔끔하게 기능을 나눠 만들 수 있었다.
맨 윗줄의 board가 memo로 되어있어서 쿼리문을 memo DB로 날리고 있었다. 하하!
이것때문에 DB에 값이 제대로 저장되지 않으면서 뭐가 문제인지 찾아 헤멨다.
게시글 생성시 ID가 생성되지 않는다는 오류.
검색! 서칭!!
정리해보자면,
IDENTITY
: id값을 DB에 들어갈 때 생성 -> 영속성 컨텍스트 이용 못함 -> 이걸 해결하려고 manager에게 탑승 시점에 DB에 쿼리 날려서 id값을 가져와서 사용. -> 하지만 id값 null이라서 오류가 났던 것.
튜터님께 여쭤보니 IDENTITY뿐만 아니라 TABLE
, SEQUENCE
, UUID
, AUTO
가 더 있다.
TABLE
은 뭐가 잘 안되면 테이블을 추가해주고, AUTO는 최적화시켜준다.
일단 AUTO
로 바꾸니 잘 작동이 되었는데,
AUTO
의 단점은... 게시글 생성시, 서버를 닫았다가 다시 열어서 만들면 id값이 일정하게 1,2,3 이렇게 설정되는 것이 아니라 1,2,52,53,54,102 이런식으로 50씩 널뛰기한다.
이건 좋지 않은 버그의 느낌이 물씬 풍기기 때문에 더 공부해서 고쳐봐야겠다.
튜터님 의견은 DB설정의 문제인데, 그쪽도 다시 확인해봐야겠다.