📚7주차: 스프링 데이터 JPA, API 문서화, 커밋과 이슈
public BoardDTO findById2(Long id) {
BoardEntity boardEntity = em.createQuery("SELECT * FROM board_table b WHERE b.id", BoardEntity.class)
.setParameter("id", id)
.getSingleResult();
BoardDTO boardDTO = BoardDTO.toBoardDTO(boardEntity);
return boardDTO;
}

(대략 그려본 erd) 많은 수정 필요
@PostMapping("/api/v1/save")
public CreateBoardResponse save(@RequestBody @Valid BoardDTO boardDTO) {
Long id = boardService.save(boardDTO);
return new CreateBoardResponse(id);
}
@Data
static class CreateBoardResponse {
private Long id;
public CreateBoardResponse(Long id) {
this.id = id;
}
}
참고 자료 보기
🚨 계층형 디렉터리 구조


✅ 도메인형 디렉터리 구조

해당 방식은 스프링 웹 계층에 주목하기 보다는 도메인에 주목한다. 이를 통해서 각각의 도메인 별로 패키지 분리가 가능하여 관리에 있어서 계층형 방식보다 직관적이며, 각각의 도메인들은 서로를 의존하는 코드가 없도록 설계하기 적합해서 코드의 재활용성이 향상된다.
최상위 레벨의 패키지
domain 하위 패키지
global 하위 패키지
✅결론
도메인형 디렉토리 구조를 적용함으로써 더 직관적으로 프로젝트를 관리할 수 있다.
코드의 재사용성이 올라간다.
패키지 방식에 정답은 없기 때문에 자신만의 패키징을 추가하면서 발전시켜나가야 한다.
결국 가장 올바른 패키지 방식은 개발자가 관리하기 쉬운, 능률을 향상 시키는 패키지 방식인 것 같다.
🚨내 계층형 디렉토리 구조를 도메인형 디렉토리 구조로 리팩터링 해보기
현재 내 디렉터리 구조
└─com
└─example
└─dcInsideClone2
├─api
├─controller
├─dto
├─entity
├─repository
└─service
✅도메인형 디렉터리 구조를 적용
깃헙에서는 이슈기능을 통해 프로젝트에서 발생하는 모든 문제를 관리할 수 있도록 돕는다. 이슈는 아래 이미지와 같이 제목과 이슈에 대한 설명을 작성하여 생성할 수 있다.


type : subject
//제목은 최대 50글자가 넘지 않도록 하고 마침표 및 특수기호는 사용하지 않는다.
//영문으로 표기하는 경우 동사(원형)를 가장 앞에 두고 첫 글자는 대문자로 표기한다.(과거 시제를 사용하지 않는다.)
//제목은 개조식 구문으로 작성한다. --> 완전한 서술형 문장이 아니라, 간결하고 요점적인 서술을 의미.
body
// 본문은 한 줄 당 72자 내로 작성한다.
// 본문 내용은 양에 구애받지 않고 최대한 상세히 작성한다.
// 본문 내용은 어떻게 변경했는지 보다 무엇을 변경했는지 또는 왜 변경했는지를 설명한다.
footer
// 꼬리말은 optional이고 이슈 트래커 ID를 작성한다.
// 꼬리말은 "유형: #이슈 번호" 형식으로 사용한다.
태그 : 제목의 형태이며, :뒤에만 space가 있음에 유의한다.
feat : 새로운 기능 추가
fix : 버그 수정
docs : 문서 수정
style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
refactor : 코드 리펙토링
test : 테스트 코드, 리펙토링 테스트 코드 추가
chore : 빌드 업무 수정, 패키지 매니저 수정
예시
Feat: "회원 가입 기능 구현"
SMS, 이메일 중복확인 API 개발
Resolves: #123
Ref: #456
Related to: #48, #45
| Emogi | Description |
|---|---|
| 🎨 | 코드의 형식 / 구조를 개선 할 때 |
| 📰 | 새 파일을 만들 때 |
| 📝 | 사소한 코드 또는 언어를 변경할 때 |
| 🐎 | 성능을 향상시킬 때 |
| 📚 | 문서를 쓸 때 |
| 🐛 | 버그 reporting할 때, @FIXME 주석 태그 삽입 |
| 🚑 | 버그를 고칠 때 |
| 🔥 | 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께 |
| 🚜 | 파일 구조를 변경할 때 . 🎨과 함께 사용 |
| 🔨 | 코드를 리팩토링 할 때 |
| 💄 | UI / style 개선시 |
| ♿️ | 접근성을 향상시킬 때 |
| 🚧 | WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용 |
| 💎 | New Release |
| 🔖 | 버전 태그 |
| ✨ | 새로운 기능을 소개 할 때 |
| ⚡️ | 도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용 |
| 💡 | 새로운 아이디어, @IDEA주석 태그 |
| 🚀 | 배포 / 개발 작업 과 관련된 모든 것 |