Skip to content

EnjoyTime18/Anonymous-Board

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Spring Boot project: 미니 익명 게시판

⚡ Spring Boot + Spring Data JPA를 이용한 프로젝트입니다.
⚡ 익명성을 보장해 주는 작은 게시판 웹 서비스입니다.
⚡ 누구나 어떠한 조건과 제한 없이 게시글과 댓글을 작성, 수정, 삭제 가능하며 여러 조건을 통한 게시글과 관련된 검색 기능을 지원합니다.

⌛ 개발 기간

09/7/23 ~ 09/19/23



🛠️ 기술 스택



🏃 참여 인원

Name GitHub Address
🧸조성민 https://github.com/EnjoyTime18



📚 ERD

ERD

⚙️ 주요 기능

📋 게시글 CRUD – 조회, 글 상세보기 및 페이징 기능

(1) 게시글 리스트

게시판 리스트


(2) 게시글 상세보기

게시글 상세보기


  • 게시글 리스트를 페이지별로 나누어서 보여주기 위해 한 페이지의 보여줄 게시물의 갯수를 10개로 조정하고 오름차순으로 정렬 및 페이지 이동 기능을 JPA Pageable를 활용하여 구현했습니다.
  • 게시글의 제목 링크를 걸어 클릭 시 해당 게시글을 상세하게 정보 확인 및 수정, 삭제, 댓글 기능을 사용할 수 있습니다.
  • 게시글 CRUD 관련 개발 요소 모두 Spring Data JPA를 활용하여 구현했습니다.

⚙️ 주요 기능

📋 게시글 CRUD – 등록, 수정, 삭제 기능

(1) 게시글 등록

게시글 등록


(2) 게시글 수정

게시글 수정


(3) 게시글 비밀번호 입력 (비밀번호 불일치 시 기준 사진)

게시글 비밀번호


  • 회원가입/로그인 기능은 익명 게시판이기 때문에 비밀번호 기능으로 대체하였습니다. 비밀번호는 게시글 CUD(등록, 수정, 삭제)시 사용됩니다.
  • 극단적인 현재의 익명 게시판은 보안에 매우 취약하다 생각하여 향후 Spring Security를 학습해 현 비밀번호 기능에서 회원가입/로그인 기능으로 변경하여 보안성을 늘려 보완할 생각입니다.

⚙️ 주요 기능

🔎 게시글 CRUD – 복합 검색 기능

(1) 게시글 복합 검색 결과

게시글 복합 검색


(1) 게시글 복합 검색 결과2

게시글 복합 검색2


  • 메인 페이지에서 여러 조건의 게시글 복합 검색을 할 수 있도록 JPA Specification을 활용하여 복합 검색 처리를 구현했습니다.

⚙️ 주요 기능

📋 댓글 CRUD – 조회, 등록 기능

(1) 댓글 등록

댓글 등록


(1) 댓글 목록

댓글 목록


  • 게시글 상세보기 페이지에서 댓글을 등록 및 조회가 가능하며 모두 Axios 비동기 라이브러리 통신으로 구현하였습니다.
  • 댓글 CRUD 관련 개발 요소 모두 Spring Data JPA를 활용하여 구현했습니다.

⚙️ 주요 기능

📋 댓글 CRUD – 수정, 삭제 기능

(1) 댓글 수정

댓글 수정


댓글 수정2


(2) 댓글 삭제 (비밀번호 불일치 시 기준 사진)

댓글 비밀번호


댓글 삭제


  • 게시글 상세보기 페이지에서 댓글을 수정 및 삭제 이 가능하며 모두 동기 방식으로 구현했습니다.
  • 현재 수정, 삭제 기능이 페이지 이동의 동기 방식으로 개발을 하였지만 향후 댓글 조회, 등록 기능에 맞추어 현 동기 방식 -> Axios 비동기 라이브러리 통신으로 모달창을 띄우며 개발 보완을 할 생각입니다.

⚙️ 주요 기능

🤕 Trouble Shooting

🚨 Reply Entity에 CascadeType.REMOVE가 적용되어 있기 때문에 Reply를 삭제할 때 연관된 Board가 삭제되려고
 하는 문제점 발생 @ManyToOne(targetEntity = Board.class, cascade = CascadeType.REMOVE)

  • Board Entity가 삭제될 때 연결된 모든 Reply Entity도 함께 삭제되게 변경
  • @OneToMany(mappedBy = "board", cascade = CascadeType.REMOVE) Board가 삭제될 때 연관된 Reply가 삭제되는 것 -> Board Entity가 삭제될 때 연관된 모든 Reply Entity도 삭제

🚨 댓글 등록 시 작성일 null 표시 문제점 발생
 Entity 클래스의 builder 메소드에서 시간 설정이 수동으로 이루어지고 있었음. 이로 인해, @CreationTimestamp
 어노테이션이 제대로 작동하지 않아 생성 시간이 null로 처리되고 있었음.

  • Entity 클래스에서 시간 필드 설정 제거: Entity 클래스의 builder 메소드에서 시간 필드에 대한 설정을 제거하여, Hibernate가 @CreationTimestamp 어노테이션을 통해 시간을 자동으로 관리할 수 있도록 함.
  • DTO에서 시간 필드 세팅: Entity에서 DTO로 데이터 변환 시, Entity에 저장된 시간 필드를 DTO의 시간 필드에 세팅함. 이로써, 클라이언트 측으로 정확한 시간 정보가 전달됨.
  • DTO 는 Entity 로부터 세팅 된거 가져 오는 용도 : Entity는 시간 값 1번만 세팅 해야 되기 떄문임. @CreationTimestamp 와 @UpdateTimestamp의 값들은 1번만 세팅되고 1번 만 실행 됨. 그래서 builder에서 시간 값을 또 세팅 시 null값 으로 세팅 됨.



⚙️ 주요 기능

About

익명 게시판 서비스를 구현한 웹 사이트 개인 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published