게시글 삭제 오류 해결
1. 테스트로그인 후 삭제 요청 해보기오류 발생 확인 fk 제약 조건 때문에 게시글을 삭제하면 댓글이 참조하는 게시글이 사라지기 때문에 삭제가 될 수 없음.어노테이션을 이용해서 도움 받기댓글의 FK에 값을 NULL로 변경하고 게시글 삭제댓글을 먼저 삭제하고, 게시글 삭제 2. cascade 설정 하기@OneToMany(mappedBy = "board", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)private List replies = new ArrayList();
- Spring Boot/Blog 프로젝트 만들기(JPA)
- · 2024. 10. 17.
댓글 목록 보기
1. 기존 코드 수정BoardService 코드 수정 (게시글 상세 보기)/** * 게시글 상세보기 서비스, 게시글 주인 여부 판별 */public Board getBoardDetails(Integer boardId, User sessionUser) { Board board = boardJPARepository .findById(boardId) .orElseThrow(() -> new Exception404("존재하지 않는 게시글입니다.")); boolean boardOwner = false; if (board.getUser().getId().equals(sessionUser.getId())) { boardOwner = true; ..
- Spring Boot/Blog 프로젝트 만들기(JPA)
- · 2024. 10. 17.
댓글 테이블 설계 (엔티티)
💡 학습 목표 1. JPA를 사용하여 데이터베이스 테이블과 자바 객체 간의 매핑을 정확하게 구현할 수 있다 2. 다대일(Many-to-One) 관계를 설정하여 엔티티 간의 연관성을 표현할 수 있다. 3. 데이터베이스에 저장할 필요가 없는 필드를 효과적으로 관리할 수 있다.1. 댓글 테이블 설계 (엔티티) 리플 엔티티 설계package com.tenco.blog_v1.reply;import com.tenco.blog_v1.board.Board;import com.tenco.blog_v1.user.User;import jakarta.persistence.*;import lombok.*;import org.hibernate.annotations.CreationTimestamp;import..
- Spring Boot/Blog 프로젝트 만들기(JPA)
- · 2024. 10. 16.

Service 레이어 만들기
목차💡 학습 목표 1. Service 레이어의 개념과 필요성을 알고 있다. 2. 트랜잭션 관리 이해 및 코드에 적용해 보기 3. Controller에서 Service 사용으로 코드 리팩토링 해보기1. User Service 레이어 만들기 Service 레이어는 애플리케이션의 비즈니스 로직을 담당하는 계층이다. Controller는 클라이언트의 요청을 받고 응답을 반환하는 역할을 하며, Repository는 데이터베이스와의 상호작용을 담당한다. 이 두 계층 사이에 Service 레이어를 도입함으로써 여러 이점을 얻을 수 있다. UserDTO 코드 추가@Datapublic static class JoinDTO { private String username; private St..
- Spring Boot/Blog 프로젝트 만들기(JPA)
- · 2024. 10. 15.

JPARepository 란?
목차💡 학습 목표 1. Spring Data JPA에서 제공하는 JPARepository의 개념과 그 활용을 알아 보자.1. JPARepository란? Spring Data JPA는 Repository 인터페이스를 통해 데이터 접근 계층을 간편하게 구현할 수 있도록 도와주는 프레임워크이다. 개발자가 직접 DAO(Data Access Object) 클래스를 작성하지 않고도, JpaRepository를 상속받는 인터페이스에 메서드를 정의함으로써 데이터베이스와의 상호작용을 처리할 수 있다. 주요 메서드 확인save(S entity): 엔티티를 저장하거나 업데이트한다.findById(ID id): ID로 엔티티를 조회한다.findAll(): 모든 엔티티를 조회한다.deleteById(ID id): I..
- Spring Boot/Blog 프로젝트 만들기(JPA)
- · 2024. 10. 14.

리팩토링
💡 학습 목표 1. User 엔티티를 단방향 매핑으로 변경할 수 있다. 2. 인증과 인가(권한) 처리에 대해서 알아보자.1. User 관련 수정 User 엔티티 수정 - 자신만의 정보를 참조 할 수 있다package com.tenco.blog_v1.user;import jakarta.persistence.*;import lombok.*;import org.hibernate.annotations.CreationTimestamp;import java.sql.Timestamp;@NoArgsConstructor@AllArgsConstructor@Getter@Setter@Builder@Entity@Table(name = "user_tb")public class User { @Id @Gene..
- Spring Boot/Blog 프로젝트 만들기(JPA)
- · 2024. 10. 14.