[팀 프로젝트-JPA 활용 게시판] 댓글 기능 + orphanRemoval로 깔끔한 삭제 처리

2025. 4. 21. 16:57·프로젝트/프로젝트 회고

https://github.com/jihwanprogramer/NewSfeed

 

GitHub - jihwanprogramer/NewSfeed

Contribute to jihwanprogramer/NewSfeed development by creating an account on GitHub.

github.com

 

나는 많은 기능 중에 댓글 기능을 맡아 구현을 진행하였다.

 

📌 주요 기능

  • 댓글 생성
  • 댓글 조회
  • 댓글 수정
  • 댓글 삭제
  • 페이징 처리된 댓글 목록 조회
  • orphanRemoval을 활용한 자동 삭제 처리

 

✅ DTO 

 

  • CommentSaveRequestDto: 저장 요청
  • CommentUpdateRequestDto: 수정 요청
  • CommentResponseDto: 단일 댓글 응답
  • CommentPageResponseDto: 페이지네이션용 응답

 

기본적인 CRUD와 페이징 기능구현은 다른 글에서 많이 다루고 기초적인것이므로 이번에는 Cascade 와 orphanRemoval 을 활용한 자동 삭제 처리 기능을 집중적으로 적어볼려고한다.

 

 

🧱 Entity 설계

✅ Board 엔티티 일부

@OneToMany(mappedBy = "board", cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<Comment> comments = new ArrayList<>();

 

 

  • cascade = REMOVE: 게시글 삭제 시 댓글도 함께 삭제됨
  • orphanRemoval = true: 댓글 리스트에서 제거되면 DB에서도 삭제됨 → 별도 CommentRepository.delete() 호출 없이도 자동 삭제 가능

 

✅ Comment 엔티티

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_id")
private Board board;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@OneToMany(mappedBy = "comment", cascade = CascadeType.REMOVE)
    private final List<CommentLike> commentLike = new ArrayList<>();
  • cascade = CascadeType.REMOVE : 댓글 삭제시 댓글 좋아요도 함께 삭제됨

 

📎 마무리

  • orphanRemoval = true의 진짜 활용법: 연관 엔티티 자동 삭제로 리포지토리 호출 최소화
  • 게시판 삭제만으로 댓글까지 자동 삭제되는 구조 설계
  • 정리된 책임 분리와 클린 코드 설계

'프로젝트 > 프로젝트 회고' 카테고리의 다른 글

[팀 프로젝트-배달어플] 기능 구현  (0) 2025.04.29
[팀 프로젝트-배달어플] S.A 작성  (0) 2025.04.23
[팀 프로젝트-JPA 활용 게시판] branch 전략 및 패키지 구조  (1) 2025.04.14
[팀 프로젝트-JPA 활용 게시판] S.A 작성  (0) 2025.04.09
[일정관리]일정 수정 및 삭제  (0) 2025.03.26
'프로젝트/프로젝트 회고' 카테고리의 다른 글
  • [팀 프로젝트-배달어플] 기능 구현
  • [팀 프로젝트-배달어플] S.A 작성
  • [팀 프로젝트-JPA 활용 게시판] branch 전략 및 패키지 구조
  • [팀 프로젝트-JPA 활용 게시판] S.A 작성
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (137) N
      • JavaScript (8)
      • SQL (10)
      • 코딩테스트 (30) N
        • Java (15)
        • SQL (13) N
      • Java (10)
      • 프로젝트 (22) N
        • 트러블슈팅 (7)
        • 프로젝트 회고 (13) N
      • git,Github (2)
      • TIL (36) N
      • Spring (17) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스파르타 코딩 #부트캠프 #첫ot
    java #arraylist #list #배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[팀 프로젝트-JPA 활용 게시판] 댓글 기능 + orphanRemoval로 깔끔한 삭제 처리
상단으로

티스토리툴바