1. 댓글 기능의 개요
1. 댓글과 게시글의 관계
하나의 게시글에 수많은 댓글이 달린다. 이러한 관계를 일대다(1:n) 관계라고 한다. 거꾸로 댓글 입장에서 여러 댓글이 하나의 게시글에 달리는 것은 다대일(n:1) 관계라고 한다.
article : comment = 1 : n 관계
article_id와 같이 자신을 대표하난 속성을 기본키(PK, Primary Key)라고 하고 comment 테이블에서 article_id와 같이 연관 대상을 가리키는 속성을 외래키(FK, Foreign Key)라고 한다.
2. 댓글 엔티티와 리파지터리 설계
엔티티: DB 데이터를 담는 자바 객체로, 엔티티를 기반으로 테이블 생성
리파지터리: 엔티티를 관리하는 인터페이스로 데이터 CRUD 등의 기능 제고
- Repository: 최상의 리파지터리 인터페이스
- CrudRepository 및 ListCrudRepository: 엔티티의 CRUD 기능 제고
- PagingAndSortingRepository 및 ListPagingAndSortingRepository: 엔티티의 페이징 및 정렬 기능 제공
- JpaRepository: 엔티티의 CRUD 기능과 페이징 및 정렬 기능뿐만 아니라 JPA에 특화된 기능을 추가로 제공
2. 댓글 엔티티 만들기
1. 댓글 엔티티 만들기
com.example.firstproject > entity > Comment.java 만들기
필요한 어노테이션 추가
각 속성에 맞는 어노테이션 추가하기
2. 더미 데이터 추가하기
resource > data.sql 데이터 추가하기
3. 댓글 리파지터리 만들기
1. 댓글 리파지터리 만들기
com.example.firstproject > repository > CommentRepository 만들기
JpaRepository<대상_엔티티, 대표키_값의_타입>
쿼리를 메서드로 작성하는 방법으로 네이티브 쿼리 메서드(native query method)가 있다.
네이티브 쿼리 메서드는 직접 작성한 SQL 쿼리를 리파지터리 메서드로 실행할 수 있게 한다.
네이티브 쿼리 메서드를 만드는 방법은 2가지가 있다.
- Query 어노테이션 이용
- orm.xml파일 이용
@Query (value= "퀴리", nativeQuery = true)
@Query 어노테이션은 SQL과 유사한 JPQL(Java Persistence Query Language)이라는 객체 지향 쿼리 언어를 통해 복잡한 퀴리 처리를 지원한다.
2. 댓글 리파지터리 테스트 코드 작성하기
test > ... > repository > CommentRepositoryTest.java 만들기
@DataJpaTest 어노테이션 추가랑 commentRepository 객체 주입
@DisplayName("테스트_결과에_따라_보여_줄_이름")
@DisplayName은 테스트 이름을 붙일 때 사용. 메서드 이름은 그대로 둔 채 테스트 이름을 바꾸고 싶을 때 사용.
1) findByArticleId() -> 4번 게시글의 모든 댓글 조회 테스트
2) findByArticleId() -> 1번 게시글의 모든 댓글 조회 테스트
3) findByNickname() -> "짱구"의 모든 댓글 조회 테스트
'Java > Spring Boot' 카테고리의 다른 글
[Day 16] 웹 페이지에서 댓글 목록 보기 (0) | 2024.08.13 |
---|---|
[Day 15] 댓글 컨트롤러와 서비스 만들기 (0) | 2024.08.12 |
[Day 13] 테스트 코드 작성하기 (0) | 2024.08.10 |
[Day 12] 서비스 계층과 트랜잭션 (0) | 2024.08.08 |
[Day 11] HTTP와 REST 컨트롤러 (0) | 2024.08.07 |