Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Developer N

[JPA] JPA 사용법 본문

STUDY/JAVA | SPRING

[JPA] JPA 사용법

nnh 2023. 2. 21. 14:19
728x90

JPA 개념은 아래 더보기 참고

 

 

1. Entity 클래스 생성 (@Entity 사용)

  • 데이터베이스에 저장하기 위해 유저가 정의한 클래스 (Domain)
  • RDBMS에서  Table을 객체화시킨 것. 따라서 Table의 이름이나 칼럼들에 대한 정보를 가짐.
  • @Entity로 선언된 클래스의 이름은 실제 데이터베이스의 테이블명과 일치하는 것을 매핑
  • 어노테이션
    • @Id
      • Primary Key를 가지는 변수를 선언한다는 의미.
      • @GeneratedValue 어노테이션으로 해당 Id값을 어떻게 자동으로 생성할지 선택 가능
    • @Table
      • 별도의 이름을 가진 데이터베이스 테이블과 매핑할때 사용
      • @Table(name=" ")
    • @Column
      • 꼭 선언할 필요 없음. 기본적으로 멤버 변수명과 일치하는 데이터베이스 칼럼을 매핑 
      • 변수명과 데이터베이스의 칼럼명을 서로 다르게 주고싶다면 @Column(name=" ") 형식으로 작성

 

2. Repository 인터페이스 생성

  • Entity 클래스 작성 후 Repository 인터페이스 생성 필요
  • 스프링부트에서는 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스 제공
    • Spring Data JPA에서 제공하는 JpaRepository 인터페이스를 상속하기만 하면 됨
    • 인터페이스에 별도의 @Repository 등의 어노테이션 추가X
    • JpaRepository를 상속받을 때 사용될 Entity 클래스와 ID값 입력
      • JpaRepository<T, ID>
  • JpaRepository 상속시 Entity에 아래와 같은 기본 기능 제공
Method 기능
save() 레코드 저장 (insert, update)
findOne() primary key로 레코드 한 건 찾기
findAll() 전체 레코드 찾기.
정렬(sort), 페이징(pageable) 가능
count() 레코드 개수 조회
delete() 레코드 삭제
  • 그외 기능 추가하려면 아래의 규칙에 맞게 메서드를 추가
    • findBy 뒤에 해당 Entity 필드 입력시 검색쿼리를 실행한 결과를 전달
    • 반환형이 Entity 객체이면 하나의 결과만 전달
    • 반환형이 List라면 쿼리에 해당하는 모든 객체 전달
Method 설명
findBy로 시작 쿼리를 요청하는 메서드
countBy로 시작 쿼리 결과 레코드 수를 요청하는 메서드
  • query 메소드에 포함할 수 있는 키워드
Method 이름 키워드 샘플 설명
And findByUserIdAndEmail(String userId, String email) 여러 필드를 and로 검색
Or findByUserIdOrEmail(String userId, String email) 여러 필드를 or로 검색
Between findByCreatedAtBetween(Date fromDate, Date toDate) 필드의 두 값 사이에 있는 항목 검색
LessThan findByAgeLessThan(int age) 작은 항목 검색
GreaterThanEqual findByAgeGraterThanEqual(int age) 크거나 같은 항목 검색
Like findByNameLike(String name) like 검색
IsNull findByJobIsNull() null 인 항목 검색
In findByJob(String … jobs) 여러 값중에 하나인 항목 검색
OrderBy findByEmailOrderByNameAsc(String email) 검색 결과를 정렬하여 전달
  • Pageable
    • 쿼리 메소드의 파라미터로 Pageable 변수 추가시 Page 타입을 return형으로 사용 가능 (Pageable 객체를 통해 페이징과 정렬을 위한 파라미터를 전달)
    • Pageable 입력 변수는 Controller에서부터 전달받아야 함
쿼리 파라미터 명 설명
page 몇번째 페이지인지 전달
size 한 페이지에 몇개의 항목을 보여줄 것인지 전달
sort 정렬 정보를 전달
정렬정보는 필드이름, 정렬 방향의 포맷으로 전달
여러 필드로 순차적 정렬도 가능

 

참고)

JPA 사용법 (JpaRepository) (tistory.com)

 

JPA 사용법 (JpaRepository)

JPA에 대한 개념은 이해가 갔지만 처음 코드를 접했을 땐 이해 안가는 부분이 많았다.그래서 잘 정리된 블로그를 참고해 다시 한번 사용법을 알기 쉽게 정리해보고자 한다. Entity먼저 데이터베이

jobc.tistory.com

 

728x90
Comments