Java(93)
-
[클론 코딩] 네이버 카페 - (통합게시판) 게시글 삭제
생성한 일반 게시판의 게시글을 삭제하는 기능을 구현하고자 한다. 게시글 삭제 요청이 오면 요청 정보를 확인해 요청한 사용자가 해당 게시글의 작성자인지 확인하고 일치한다면 해당 게시글을 DB에서 삭제 후 결과 메시지를 반환하도록 작성할 것이다.NormalControllerpackage CloneCoding.NaverCafe.domain.article.normal.controller;@Slf4j@RestController@RequiredArgsConstructor@RequestMapping("/cafe/{cafe_url}")public class NormalController { private final NormalService normalService; @DeleteMapping("/delete..
2024.06.04 -
[클론 코딩] 네이버 카페 - (통합게시판) 게시글 읽기
이번에는 게시글을 읽을 수 있도록 게시글의 정보를 전달하는 기능을 구현하고자 한다. 기본적으로 DB에서 정보를 찾아 응답 DTO 객체를 생성하겠지만 이번엔 주의할 것이 있다. 바로 '동시성 문제'를 해결하는 것인데, 해당 문제가 발생할 부분은 여럿 있지만 그 중에 '게시글 조회수'에 대한 문제를 염두해두고 문제를 방지할 수 있도록 코드를 작성할 생각이다. 조회수의 경우 생길 수 있는 동시성 문제는 다음과 같다. 게시글을 읽는 기능은 DB에서 게시글 정보를 조회하고, 조회수를 증가시키고 DB에 반영 게시글 정보를 객체에 담아 반환하는 식의 과정으로 진행될 것이다. 하지만 다른 두 사용자가 거의 동시에 미세한 차이로 같은 게시글을 읽을 경우 같은 정보를 조회하고 수정하면 데이터에 손실이 생기는 것이다. ..
2024.06.01 -
[클론 코딩] 네이버 카페 - (통합게시판) 게시글 수정
이번에는 게시글 수정 기능을 추가하도록 하겠다. 게시글의 수정양식은 작성양식과 다르지 않으며 사용자에게 제공되는 정보만 다르다, 작성양식의 경우 기본 정보가 제공, 수정양식은 수정하려는 게시글의 정보가 제공될 것이다. 네이버 카페 게시글의 경우 수정해도 작성일이 바뀌지 않는 걸로 봐서 수정일에 대한 정보는 필요 없을거라 판단했다.Normalpackage CloneCoding.NaverCafe.domain.article.normal;@Entity@Table(name = "NORMAL_ARTICLE")@Getter@Builder@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructorpublic class Normal { public v..
2024.05.31 -
[클론 코딩] 네이버 카페 - (통합게시판) 게시글 작성
통합 게시판을 구현해 두었으니 해당 게시판에 게시글을 작성할 수 있도록 '게시글 작성' 기능을 구현할 것이다. 그리고 더불어 사용자가 게시글을 작성할 수 있게 양식을 제공할 때 사용되는 기본 데이터를 전달하는 기능 또한 구현할 생각이다. 게시판 - 게시글의 관계는 네이버 카페 시스템을 기준으로 하면 게시판 보다 게시글이 더 자유롭다. 무슨 말이냐면 게시글이 있는 게시판은 기능에 제한이 생긴다. 간단한 예로 게시글이 있는 게시판은 삭제가 불가능하다. 그리고 게시판은 다양한 정보를 수정할 순 있지만 게시판의 타입은 수정할 수 없다. 이러한 부분 때문에 두 엔티티의 연관관계를 설정하지 않고 각각의 엔티티를 Cafe 엔티티와 연관관계를 지었다.Normalpackage CloneCoding.NaverCafe...
2024.05.30 -
[클론 코딩] 네이버 카페 - 통합게시판 수정
저번에는 일반 게시판을 카페에 추가하는 기능을 구현했으니 이번에는 수정하는 기능을 구현하고자 한다. 사용자가 요청을 하면 서버에서는 기존 게시판의 정보를 담아 응답하며 사용자는 현재 게시판의 정보를 확인하면서 수정하고자하는 데이터를 입력해 수정 요청을 서버에 전달할 것이다. 서버는 요청 정보를 확인해 기존 게시판 정보를 수정후 DB에 반영하면 게시판 수정이 완료될 것이다. 참고로 이번 기능을 구현하면 클래스명이나 메서드명때문에 고민을하였다. 문제는 너무 길어서...게시판이라 생각하고 BulletinBoard라는 이름을 사용했는데 이후 메서들 만들거나 할 때 길이가 너무 길어져 내심 불편한 점이 있었고 다음의 방법으로 이를 해결해 보았다. 네이버는 게시판 목록을 '메뉴'라고 묶고 기본, 일반등으로 ..
2024.05.29 -
[클론 코딩] 네이버 카페 - 통합게시판 추가
저번에는 카페 생성에 따라 기본 게시판이 추가되는 기능을 구현했으니, 이번에는 카페에 게시판을 추가하는 기능을 구현하고자 한다. 일단 네이버 카페에는 여러 타입의 게시판이 있지만 해당 게시글에서는 기본 타입인 '통합(일반) 게시판'에 대한 추가를 구현한다. 사용자는 게시판 타입을 선택하면 게시판 추가를 위한 정보를 입력할 수 있는 양식을 응답 받는다. 그리고 양식에 정보를 입력해 서버에 전달하면 게시판이 추가될 것이다.BulletinBoardpackage CloneCoding.NaverCafe.domain.bulletinBoard;import static CloneCoding.NaverCafe.domain.bulletinBoard.enums.BasicBulletinBoardData.*;import s..
2024.05.28