GraphQL 게시판 JPA 설정

이재연·2021년 1월 14일
1

이번 게시글에서는 JPA를 설정한다.

구현

필요한 객체를 만들어보자.
로그인 기능은 없고 글을 작성할 때 작성자를 입력 받을 것이다.
그리고 삭제할 때 필요한 삭제키도 필요하다고 생각했다.

@Entity
@Builder
@Getter @Setter
@NoArgsConstructor
@AllArgsConstructor
@EntityListeners(AuditingEntityListener.class)
public class Board {

	@Id @GeneratedValue
	private Long boardId;	

	@Column(nullable = false)
	private String author;

	@Column(nullable = false)
	private String content;

	@Column(nullable = false)
	private String removeKey;

	@CreatedDate
	private LocalDateTime createdDate;

	@LastModifiedDate
	private LocalDateTime updatedDate;

	private boolean visible;
}
  • 게시글 ID값은 자동 생성으로 설정한다.
  • 작성자, 내용, 삭제키는 필수로 받는다.
  • 생성 일자와 수정 일자는 auditing을 사용해 입력받는다.
    @CreatedDate, @LastModifiedDate을 붙여주고
    클래스에 @EntityListeners(AuditingEntityListener.class)를 붙여준다.
  • 삭제는 실제 삭제가 아닌 visible값으로 설정한다.

application 클래스에 @EnableJpaAuditing을 붙여 auditing 기능을 활성화 시킨다.

@EnableJpaAuditing
@SpringBootApplication
public class GraphQlApplication {
	public static void main(String[] args) {
		SpringApplication.run(GraphQlApplication.class, args);
	}	
}

그리고 JpaRepository를 만들고 필요한 기능을 작성한다.
조회, 저장, 삭제 기능이 필요하다.

public interface BoardRepository  extends JpaRepository<Board,Long> {

	  List<Board> findByVisibleOrderByCreatedDateDesc(boolean visible);
	  
	  Optional<Board> findByBoardId(Long boardId);
	  
	  Board save(Board board);
	  
}

조회는 visible값에 따라 조회를 했고 페이징 기능은 뺐다.

결과

테스트 완료!

0개의 댓글