본문 바로가기

게시판 만들기7

[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] 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.
[Plming] 게시판 예외 처리(Global Exception Handling) 알아보기 1. Logback 적용하기 SQL 쿼리가 실행됐을 때 상세한 로그를 확인할 수 있도록 로그백 설정을 적용한다. "main.resources.template" 패키지에 logback-spring.xml 파일을 추가하고, 아래 코드를 작성한다. %d %5p [%c] %m%n %d %5p %m%n 쿼리 로그가 정렬되어 출력되고, 쿼리에 대한 추가적인 정보를 제공받을 수 있도록 Log4JDBC 라이브러리를 추가해볼 것이다. build.gradle의 dependencies에서 implements 가장 하단에 Log4JDBC 라이브러리만 추가한다. 라이브러리를 추가한 다음에는 반드시 다시 빌드해주어야 된다. implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jd.. 2022. 3. 29.
[Plming] 게시판에 JPA 적용하기 git을 잘못 사용해서 기존에 했던 작업물들이 모두 사라졌다.. github에 올려두었던 코드들을 다시 clone해올까도 했지만, 어차피 폴더 구조도 변경해야 하고, JPA와 REST API를 적용하도록 코드를 변경해야 해서 그냥 처음부터 다시 만들기로 결정했다. 그래서 다시 프로젝트를 생성하러 Spring Initializr에 들어갔다.. Project: Gradle Project Language: Java Spring Boot: 2.6.5 Project Metadata Group: board Artifact: plming Name: plming package name: plming Packaging: Jar Dependencies Spring Boot DevTools Lombok Spring Conf.. 2022. 3. 29.
[Plming] 개발 환경 세팅하기 [개발 환경] 더보기 Windows 10 IDE: IntelliJ IDE 2021.3.2 SQL: MySQL 8.0.x 2022년 3월 16일 ~ 2022년 3월 21일까지는 상세 기능 명세서를 작성하고, 프런트엔드 파트와 공유할 REST API 문서 초안을 작성했다. 작성한 내용은 아래 링크에서 확인 가능하다. 1. 상세 기능 명세서 2. REST API 초안 백엔드 파트 스프린트에서 각자 개발할 파트를 나눴다. 나는 게시판 부분 개발을 진행하기로 하고, 다른 팀원은 DB 설계와 서버 개설, 사용자 관리(로그인, 회원 가입) 부분 개발을 진행해주시기로 하셨다. 아직 스프링을 자유자재로 다룰 수 있는 실력이 되지 않아 우선 수강하던 스프링 강의(인프런 김영한 님의 스프링 MVC 활용 1편)를 모두 들은 .. 2022. 3. 24.
728x90
LIST