일단 엔티티를 작성한다.
package org.cvcvcx.board.entity;
import lombok.*;
import javax.persistence.*;
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString(exclude = "writer")
public class Board extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long bno;
private String title;
private String content;
@ManyToOne(fetch = FetchType.LAZY)
private Member writer;
}
위는 지금 프로젝트중인 board 엔티티이다.
@Entity
어노테이션을 붙이면 JPA에서 자동으로 테이블을 생성하고, 변수들을 컬럼으로 생성해준다.
각 변수 위에 @Column
어노테이션을 붙이면 각 테이블에 조건을 넣을 수 있다.
(조건이 없으면 @Column
어노테이션 생략해도 데이터베이스에 컬럼은 생성된다.)
이후 Repository를 작성한다.
package org.cvcvcx.board.repository;
import org.cvcvcx.board.entity.Board;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Objects;
public interface BoardRepository extends JpaRepository<Board,Long> {
@Query("SELECT b, w FROM Board b LEFT JOIN b.writer w WHERE b.bno = :bno")
Object getBoardWithWriter(@Param("bno") Long bno);
@Query("SELECT b, r FROM Board b LEFT JOIN Reply r ON r.board = b WHERE b.bno = :bno")
List<Objects[]> getBoardWithReply(@Param("bno") Long bno);
}
위는 지금 JPQL과 같이 JPA를 사용하고 있는 모습으로, BoardRepository가 JpaRepository<Entity,PK>
형식의 클래스를 상속받고 있는 모습을 볼 수 있다.
이것만 해도 기본적인 crud가 가능해진다.
Uploaded by N2T