Learn & Record
Spring Boot (엔티티 클래스와 JpaRepository, 테스트 코드 작성, 조회 작업 테스트, 페이징 정렬처리) 본문
Dev/Spring
Spring Boot (엔티티 클래스와 JpaRepository, 테스트 코드 작성, 조회 작업 테스트, 페이징 정렬처리)
Walker_ 2024. 5. 13. 10:481. 엔티티 클래스와 JpaRepository
- (폴더와 파일은 무조건 메인 메서드 있는 곳에 만드는 구조로 해야 함)

- 새로운 프로젝트에 새로운 패키지와 클래스 생성
package entity;
import jakarta.persistence.*;
import lombok.ToString;
@Entity
@Table(name = "tbl_memo")
@ToString
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long mno;
}
- 코드 작성
package entity;
import jakarta.persistence.*;
import lombok.*;
@Entity
@Table(name = "tbl_memo")
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long mno;
@Column(length = 200, nullable = false)
private String memoText;
}
- 코드 추가
spring.application.name=spring_boot_project_02
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3308/boot_ex_jpa
spring.datasource.username=root
spring.datasource.password=5046
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
- application.properties에 위 코드 추가

- 패키지와 인터페이스 새로 생성
package repository;
import entity.Memo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MemoRepository extends JpaRepository<Memo, Long> {
}
- 코드 입력
2. 테스트 코드 작성

package com.example.spring_boot_project_02.repository;
import lombok.extern.log4j.Log4j2;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import repository.MemoRepository;
@SpringBootTest
@Log4j2
public class MemoRepositoryTest {
@Autowired
private MemoRepository memoRepository;
@Test
public void testClass() {
log.info(memoRepository.getClass().getName());
}
}
- 테스트 패키지, 파일 생성 후 코드 작성
3. 조회 작업 테스트
@Test
public void testSelect() {
// 데이터베이스에 존재하는 mno
Long mno = 100L;
Optional<Memo> optionalMemo = memoRepository.findById(mno);
log.info("======");
if (optionalMemo.isPresent()) {
Memo memo = optionalMemo.get();
log.info(memo);
}
}
- 조회 작업 테스트 코드
4. 페이징 정렬처리
@Test
public void testPageDefault() {
// 1페이지 10개
Pageable pageable = (Pageable) PageRequest.of(0, 10);
Page<Memo> memoPage = memoRepository.findAll((org.springframework.data.domain.Pageable) pageable);
log.info(memoPage);
}
@Test
public void testPageDefault() {
// 1페이지 10개
Pageable pageable = (Pageable) PageRequest.of(0, 10);
Page<Memo> memoPage = memoRepository.findAll((org.springframework.data.domain.Pageable) pageable);
log.info(memoPage);
log.info("---------");
log.info("Total Pages : " + memoPage.getTotalPages()); // 총 몇개 페이지
log.info("Total Count : " + memoPage.getTotalElements()); // 전체 개수
log.info("Page Number : " + memoPage.getNumber()); // 현재 페이지 번호. 0부터 시작
log.info("Page Size : " + memoPage.getSize()); // 페이지당 데이터 수
log.info("has Next page? : " + memoPage.hasNext()); // 다음 페이지
log.info("first page? : " + memoPage.isFirst()); // 시작 페이지(0) 여부
}
log.info("------------------");
for (Memo memo : memoPage.getContent()) {
log.info(memo);
}
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)