- [JPA] 25. 댓글 기능 작성하기2024년 10월 16일
- Song hyun
- 작성자
- 2024.10.16.:52
728x90반응형[JPA] 25. 댓글 기능 작성하기
1. Reply.java 클래스 작성하기
package com.tenco.blog_v2.reply; import com.tenco.blog_v2.board.Board; import com.tenco.blog_v2.user.User; import jakarta.persistence.*; import lombok.*; import org.hibernate.annotations.CreationTimestamp; import java.time.LocalDateTime; @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder @Entity @Table(name = "reply_tb") // 연관된 엔티티를 사용하여 @ToString(exclude = {"user","board"}) public class Reply { // 일반적으로 id는 Long 타입을 사용하는 것을 권장한다. @Id @GeneratedValue private Integer id; // null 값이 들어올 수 없어! - 기본 값을 null 허용 @Column(nullable = false) private String comment; // 단방향 관계 설계 -> User 엔티티에는 Reply 정보가 없다!!! @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; // 양방향 매핑 (FK 주인은 댓글(Reply)이다) @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "board_id") private Board board; // JPA 엔티티에서 데이터베이스에 저장할 필요가 없는 필드를 정의할 때 사용한다. @Transient private boolean isReplyOwner; @Builder.Default private String status = "ACTIVE"; // 댓글 상태 (ACTIVE, DELETE) @CreationTimestamp // 엔티티가 생성될 때 자동으로 현재 시간으로 설정 @Column(name="created_at") private LocalDateTime createdAt; /** * 엔티티가 데이터베이스에 영속화되기 전에 호출되는 메서드가 있다면 사용한다. * @PrePersist 어노테이션은 JPA 라이프 사이클 이벤트 중 하나로 엔티티가 영속화 되기 전에 실행된다. */ @PrePersist protected void onCreate(){ if(this.status == null){ this.status = "ACTIVE"; } if(this.createdAt == null){ this.createdAt = LocalDateTime.now(); } } }
728x90반응형'JPA' 카테고리의 다른 글
[JPA] 27. 게시글 삭제 오류 해결하기 (0) 2024.10.17 [JPA] 26. 댓글 목록 보기 기능 (0) 2024.10.17 [JPA] 24. Mustache를 사용한 Blog 제작 - 인터셉터 만들기 (0) 2024.10.11 [JPA] 23. Mustache를 사용한 Blog 제작 - 에러 컨트롤러 및 커스텀 익셉션 만들기 (0) 2024.10.11 [JPA] 22. Mustache를 사용한 Blog 제작 - 에러 페이지 만들기 (0) 2024.10.11 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)