본문 바로가기

Spring Boot18

[Plming] 게시판 기능 코드 리뷰 6편 (알림 기능) 저번 글에서는 댓글과 관련된 코드를 살펴보았다. 이번 글에서는 알림 기능과 관련된 코드를 리뷰해볼 것이다. 알림 기능은 이 블로그를 참고해서 구현했다. 알림 기능과 관련된 코드의 폴더 구조이다. 이번에도 entity 패키지와 dto 패키지의 코드를 먼저 살펴본 뒤 repository 패키지, service 패키지, controller 패키지의 코드를 살펴볼 것이다. 1. Entity 패키지 1.1. NotificationContent 더보기 @Getter @Embeddable @NoArgsConstructor(access = AccessLevel.PROTECTED) public class NotificationContent { private static final int MAX_LENGTH = 50; @.. 2022. 4. 21.
[Plming] 게시판 기능 코드 리뷰 5편 (댓글 기능) 저번 글에서는 게시글 검색 기능 관련 코드 리뷰를 진행했다. 이번 글에서는 댓글 기능 코드를 리뷰해볼 것이다. 댓글 기능 관련 코드 폴더 구조이다. 먼저 dto 패키지와 entity 패키지에 포함되어 있는 코드들을 살펴본 뒤, 기능 별로 controller -> service -> repository 순으로 살펴볼 것이다. 1. entity 패키지 1.1. Comment 더보기 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "comment") public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long i.. 2022. 4. 19.
[Plming] 게시판 기능 코드 리뷰 4편 (검색 기능) 저번 글에서는 게시글 신청과 관련된 코드를 리뷰해보았다. 이번 글에서는 게시판 검색과 관련된 코드들을 리뷰해보려 한다. 게시판 검색 조건은 제목, 내용, 제목+내용에 포함된 키워드를 통해 검색할 수 있으며, 카테고리, 모집 상태, 태그, 기간, 최대 참여 가능한 인원수별로 검색이 가능하다. 또한, 검색 조건이 아무것도 없는 경우에는 게시글 전체 리스트를 반환한다. 1. SearchApiController @RestController @RequestMapping("/posts") @RequiredArgsConstructor public class SearchApiController { private final SearchService searchService; @GetMapping public Respon.. 2022. 4. 15.
[Plming] 게시판 기능 코드 리뷰 3편 (신청 기능) 저번 글에서는 게시판 CRUD 기능과 관련된 코드를 리뷰해보았다. 이번 글에서는 게시글 신청, 검색 기능과 관련된 코드를 살펴보며 개발을 진행하면서 궁금했던 점과 공부해야 할 부분들을 정리해볼 것이다. 1. 게시글 신청 사용자는 게시글에 참여 신청을 할 수 있고, 게시글을 작성한 사용자는 참여를 신청한 사용자를 승인, 거절할 수 있다. 또한, 본인의 게시글에 들어갈 경우 게시글 상세 정보와 함께 현재 신청한 사용자와 참여가 승인된 참여자 목록을 보여줄 것으로 계획했기 때문에 이와 관련된 API도 필요했다. 만약 본인이 작성한 게시글이 아닌 경우에는 게시글 상세 정보와 참여가 승인된 참여자 목록만 보이도록 할 예정이다. 이제 기능별 코드를 하나씩 살펴볼 것이다. 1.1. 게시글 신청하기 게시글을 신청하려는.. 2022. 4. 14.
[Plming] 게시판 기능 코드 리뷰 2편 (게시글 CRUD 기능) 이전 글에서는 entity 패키지와 dto 패키지의 코드들을 리뷰했다. 이번 글에서는 게시글 CRUD 기능 관련 코드들을 리뷰해보려고 한다. 각 기능 별로 Controller -> Service -> Repository -> return 값 순서로 코드를 살펴보면서, 궁금한 점과 리팩터링 할 코드가 있는지 정리해볼 것이다. 게시판 CRUD와 관련된 로직은 Board, BoardRepository, BoardCustomRepository, BoardCustomRepositoryImpl, BoardApiController, BoardService 클래스에서 처리한다. 1. 게시글 생성 BoardApiController /** * 게시글 생성 */ @PostMapping public ResponseEntity.. 2022. 4. 13.
[Plming] 게시판 기능 코드 리뷰 1편 (Entity와 DTO 객체 살펴보기) 원래 계획은 기능을 하나하나 만들어가는 모든 과정을 기록하면서 진행하려고 했으나, 프론트엔드에게 API를 전달해주기로 한 날짜가 얼마 남지 않았어서 기능 개발을 먼저 완료하고 API를 전달한 뒤에 코드 리뷰를 해보려고 한다. 먼저 게시글 관련 코드의 폴더 구조이다. controller controller 패키지 안에는 Controller 클래스가 들어가 있다. Controller는 HTTP 요청을 처리하고, 브라우저에 보여줄 HTML을 뷰에 요청하거나, REST 형태의 응답 몸체에 직접 데이터를 추가하는 역할을 수행한다. BoardApiController 게시글 CRUD, 신청 기능과 관련된 Controller 클래스 SearchApiController 게시글 검색 관련 Controller 클래스 초기 .. 2022. 4. 13.
[Plming] 신청 기능 추가하기 게시글의 신청 버튼을 추가해 사용자가 참여하고 싶은 모임에 참여할 수 있도록 기능을 추가하려고 한다. 1. DB 테이블과 Entity 생성 우선 신청 정보를 담을 DB를 생성해보자. CREATE TABLE `application` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) NOT NULL COMMENT '사용자ID', `post_id` bigint(20) NOT NULL COMMENT '게시글ID', `status` enum("승인", "거절", "대기") NOT NULL DEFAULT "대기" COMMENT '지원상태', PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `post_id` (.. 2022. 4. 4.
[Plming] 게시글 기능 테스트 지금까지 기능 개발을 진행하면서 테스트를 계속 진행하기는 했지만, 테스트 파일 이곳저곳에서 테스트를 진행해 각 기능의 테스트 코드가 어디 들어가 있는지 파악하기 힘들었다. 따라서 application을 매핑하기 전에 그동안 개발해온 기능들도 다시 한번 테스트하고, 테스트 코드도 정리할 겸 한 번 더 기능 테스트를 하기로 결정했다. 테스트는 JUnit을 사용할 예정이다. 진행해야 할 테스트는 아래와 같다. BoardServiceTest save( ) - 게시글 등록 update( ) - 게시글 수정 delete( ) - 게시글 삭제 (실제 DB에서 삭제) deleteYn( ) - 게시글 삭제 (deleteYn의 값을 1로 변경) findAll( ) - 게시글 리스트 조회 findAllByDeletYn( ).. 2022. 4. 2.
[Plming] 태그 관련 연관 관계 매핑 게시글을 생성할 때 사용자가 게시글과 관련된 태그를 선택할 수 있도록 구현하기로 했다. 이 경우 게시글과 태그를 일대다 관계로 구현하기 위해 두 테이블을 연결하기 위한 연관 Entity가 필요하다. 따라서 태그를 구현하는데 필요한 연관 Entity를 먼저 생성해줄 것이다. (DB 연관관계 설정 부분에서 생성한 Entity를 약간 수정했다.) 1. Entity 생성 및 수정 먼저 Tag entity를 생성해볼 것이다. "plming" 패키지 아래 tag 패키지를 생성하고 "entity" 패키지를 생성한 후 Tag 클래스를 생성한다. Tag 클래스 생성이 완료되면 더보기 코드를 작성한다. 더보기 package plming.tag.entity; import lombok.AccessLevel; import lo.. 2022. 4. 1.
[Plming] DB 연관 관계 설정 이제 게시판 테이블과 관련된 테이블의 연관 관계를 설정할 것이다. 게시판 DB와 연관관계를 설정해야 할 DB는 아래와 같다. user 테이블 사용자 정보를 가지고 있는 테이블 기존의 게시판 테이블에서는 user 컬럼에 사용자의 이름을 값으로 직접 가지고 있었지만, post 테이블과 user 테이블 연관 관계를 설정해 post 테이블의 user_id 컬럼에서 게시글 작성자의 id 값을 가지고 있도록 변경할 것이다. tag: tag 테이블의 컬럼으로는 id와 name이 있으며 tag 테이블 게시글에 달린 tag의 정보를 가지고 있는 테이블 컬럼으로 id와 name이 있다. post_tag 테이블 게시글에 달린 태그의 정보를 저장하는 테이블 컬럼으로 id, post_id, tag_id를 가진다. post_id.. 2022. 3. 30.
728x90
LIST