Spring Data Jpa 의 네 가지 조회 방식 에 대한 상세 한 설명

이 글 은 주로 Spring Data Jpa 의 네 가지 조회 방식 에 대한 상세 한 설명 을 소개 하 였 으 며,예시 코드 를 통 해 매우 상세 하 게 소개 하 였 으 며,여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 고 있 으 므 로 필요 한 분 들 은 참고 하 시기 바 랍 니 다.
1.인 터 페 이 스 를 호출 하 는 방식
1.기본 소개
인터페이스 에 있 는 방법 을 호출 하여 조회 하려 면 사용자 정의 인터페이스 가 Spring Data Jpa 에 규정된 인 터 페 이 스 를 계승 해 야 합 니 다.

public interface UserDao extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User>
이 몇 가지 방법 을 사용 하 는 전 제 는 당신 이 정의 한 실체 류 에 해당 하 는 주 해 를 표시 해 야 한 다 는 것 이다.

@Entity //         
@Table(name = "tbl_user") //            
public class User {

  @Id //        
  @GeneratedValue(strategy = GenerationType.IDENTITY) //      ,  
  @Column(name = "user_id")//             
  private Integer userId;

  @Column(name = "user_name")
  private String userName;

  @Column(name = "user_address")
  private String userAddress;

  @Column(name = "user_salary")
  private Double userSalary;
  
  //...getter setter toString  
}
JpaRepository
첫 번 째 인터페이스 에서 간단 한 CRUD 방법 을 정 의 했 습 니 다.범 형 T 는 당신 이 정의 하 는 실체 류 의 유형 이 고 범 형 ID 는 당신 의 실체 류 에서 메 인 키 의 유형 입 니 다.

JpaSpecificationExecutor
이 인 터 페 이 스 는 우리 가 복잡 한 조 회 를 완성 하 는 데 도움 을 줄 수 있 습 니 다.범 형 T 는 당신 이 정의 한 실체 류 의 유형 입 니 다.

2.사용법
하나의 인 터 페 이 스 를 만들어 서 상기 두 인 터 페 이 스 를 계승 하고 범 형 을 채 우 면 호출 할 수 있 습 니 다.

//   ,     findAll  
@Test
public void testFindAll(){
  List<User> users = userDao.findAll();
  for (User user : users) {
    System.out.println(user);
  }
}
3.주의사항
Jpa Repository 인터페이스 에는 findOne()과 getOne()방법 이 있 습 니 다.말 그대로 두 가지 방법 은 모두 하 나 를 조회 하 는 것 입 니 다.그 렇 긴 하지만 두 가지 본질 적 으로 어느 정도 차이 가 있 습 니 다.
findOne()
바 텀 에서 find()방법 을 호출 했 습 니 다.우리 가 이 방법 을 호출 할 때 직접 결 과 를 찾 아 냈 습 니 다.
getOne()
바 텀 에서 getReference()방법 을 호출 했 습 니 다.게 으 른 로 딩 모드 입 니 다.동적 에이전트 방식 으로 동적 에이전트 대상 을 만 들 었 습 니 다.검색 결 과 를 호출 할 때 sql 문 구 를 보 내 고 우리 가 필요 로 하 는 결 과 를 조회 할 수 있 습 니 다.
jpql 조회
1.기본 소개
jpql 즉 Jpa Query Language
jpql 문법 과 sql 은 대동소이 합 니 다.jpql 은 실체 류 를 대상 으로 하 는 조작 입 니 다.sql 은 데이터베이스 시트 를 직접 조작 하기 때문에 jpql 에 서 는 sql 에 있 는 데이터베이스 시트 이름,열 이름 등 정 보 를 실체 류 속성 으로 바 꿀 뿐 입 니 다.
예컨대
sql 문장의 조회:select*from tbluser where user_name = ?
jpql 문장의 조회:from User where userName=?
2.사용법
사용자 정의 방법 입 니 다.여 기 는@Query 주 해 를 사용 합 니 다.value 는 jpql 구문 입 니 다.모든 물음표 뒤에 숫자 가 있 습 니 다.이 숫자 는 사실 이 속성 대응 방법 내 형 삼 의 위 치 를 표시 합 니 다.그러면 우 리 는 속성의 순서에 따라 값 을 부여 하지 않 을 수 있 습 니 다.

/**
 *     id name  
 * @return     
 */
@Query(value = "from User where userId = ?2 and userName = ?1")
User findUserByIdAndName(String name, int id);
테스트 코드

@Test
public void testJpql1(){
  User user = userDao.findUserByIdAndName("  ", 1);
  System.out.println(user);
}
3.주의사항
jpql 을 사용 하려 면 주 해 를 사용 하여 실체 클래스 와 파 라 메 터 를 설정 한 것 이 전제 입 니 다.

주해 의 상세 한 정 보 는 다음 과 같다.

/**
 * @Entity
 *    :         。
 * @Table
 *    :              。
 *    :
 *  name:         
 * @Id
 *    :         。
 * @GeneratedValue
 *    :         。。
 *    :
 *  strategy :        。
 *   GenerationType.IDENTITY:  ,           (mysql)
 *   GenerationType.SEQUENCE:  ,           (oracle)
 *   GenerationType.TABLE:jpa       ,                ,                
 *   GenerationType.AUTO:           
 *
 * @Column
 *    :                   
 *    :
 *   name:          。
 *   unique:    
 *   nullable:      
 *   inserttable:      
 *   updateable:      
 *   columnDefinition:           DDL
 *   secondaryTable:    。          (      ),                    [  ]
 */
sql 조회
1.기본 소개
sql 구문 조회 사용 하기
2.사용법
사용자 정의 방법 은 jpql 과 달리 이 방법 은 nativeQuery=true 를 추가 하여 로 컬 조회(sql 조회)임 을 밝 혀 야 합 니 다.

/**
 *   sql      
 */
@Query(value = "select * from tbl_user where user_name like ?",nativeQuery = true)
List<User> sqlFindByName(String name);
테스트 방법

@Test
public void testSql2(){
  List<User> users = userDao.sqlFindByName("% %");
  for (User user : users) {
    System.out.println(user);
  }
}
4.방법 명명 규칙 조회
1.기본 소개
말 그대로 Spring Data JPA 가 정 한 방법 명 으로 조회 하 는 방법 입 니 다.이 방식 은 jpql 이나 sql 을 쓸 필요 가 없습니다.Spring Data JPA 는 방법 명 을 해석 하여 자동 으로 조 회 를 만 들 수 있 습 니 다.
2.사용법
사용자 정의 방법

/**
 *           id    
 * @param name
 * @param id
 * @return
 */
List<User> findUserByUserNameLikeAndUserId(String name, int id);
테스트

@Test
public void TestName1(){
  List<User> users = userDao.findUserByUserNameLikeAndUserAddress("% %", "  ");
  for (User user : users) {
    System.out.println(user);
  }
}
3.명명 규칙
Spring Data JPA 가 정의 하 는 규칙 에 따라 조회 방법 은 findBy 로 시작 하고 삭제 방법 은 deleteBy 로 시작 합 니 다.조건 조회 와 관련 될 때 조건 의 속성 은 조건 키워드 로 연결 되 며 주의해 야 할 것 은 조건 속성 이니셜 은 대문자 가 필요 합 니 다.프레임 워 크 는 방법 명 해석 을 할 때 방법 명 이 남 은 접 두 사 를 자 른 다음 나머지 부분 을 해석 합 니 다.
만약 당신 이 사용 하 는 컴 파일 러 가 아이디어 라면,당신 이 작성 할 때 아이디어 도 힌트 를 줄 것 입 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기