본문 바로가기
Back-End/Spring

[JPA] JPA Repository 메소드로 쿼리없이 코딩

by LeeGangEun 2022. 8. 9.

 

JPA Repository에서 쿼리를 이용하는 방법은 여러가지가 있다.

1. JPQL 이용
2. nativeQuery 사용
3. Querydsl 사용
4. 메소드 명명만으로 쿼리 생성

4번의 방법을 이용한 JPA 사용법이다.

 

검색 메서드

1). findAll()

DB에서 전체 값을 list로 불러올때 사용한다.

 

2). findOne()

primary key로 값을 1건 조회할 때 사용한다.

 

3). findByXX => SQL Where절이라고 생각하자.

findBy뒤에 우리가 정의한 Entity의 이름을 붙이면된다.

Entity의 이름의 첫글자는 대문자로 하며, id를 조건으로 검색한다면 findById(int id) 로 검색하면 된다.

 

여기서 여러개의 조건을 걸고싶다면...?

And조건

findByIdAndName(int id, String name)으로 And를 사용하여 검색한다.

OR 조건

findByIdOrName(int id, String name)으로 Or을 사용하여 검색한다.

 

4). Like / NotLike

like를 붙이면 인수에 지정된 텍스트를 포함하는 Entity를 검색한다.

=> SQL Like문

NotLike는 반대로 지정된 텍스트를 포함하지 않는 엔티티를 검색한다.

findByNameLike 라고 사용하게 된다면, name에서 인수의 텍스트를 검색한다.

 

5). StartingWith / EndingWith

값에서 지정된 텍스트로 시작하거나, 끝나는 값을 검색한다.

findByNameStartingWith("Bab") 이라면 이름이 Bab으로 시작하는 이름을 검색한다.

반대로 findByNameEndingWith("Bab")이라면 이름이 Bab으로 끝나는 이름을 검색한다.

 

6). IsNull / IsNotNull

값이 null이거나 null이 아닌 아이들을 검색한다.

예를들어 Name중에 null인 것들을 검색하려면...? => findByNameIsNull() 이렇게 사용하면 된다.

 

7). True / False

Boolean값으로 true/false인것을 검색한다. 

예를들어 useYn이 true인 아이들을 검색하려면...? => findByUseYnTrue()로 검색하면 된다. 반대는 False()

 

8). Before / After

시간 기준으로 값을 검색한다.

예를 들어 createdDate가 현재보다 이전것을 검색하고 싶다면...? => findByCreatedDateBefore(new Date())로 검색할 수 있다.

 

9). LessThan / GreaterThan

숫자(값)를 기준으로 더 작은,큰 값을 검색한다.

에를들어 cnt가 20보다 작은것들을 검색하고 싶다면...? => findByCntLessThan(20)으로 검색할 수 있다.

 

10). Between

두숫자(값)의 사이에 있는 값을 기준으로 검색한다.

예를들어 cnt가 0부터 20까지 사이에 있는 값만 검색하고 싶다면...? => findByCntBetween(0,20)으로 검색할 수 있다.

시간도 사용가능하다

 

11). OrderBy

우리는 orderby를 자주 사용한다. jpa에서는 어떻게 사용해야 할까?

간단하다 메서드 명에 OrderBy검색할Entity명Asc/Desc(조건)을 사용하면 된다.

예를들어 cnt를 순서대로, 주소를 기준으로 뽑아오고 싶다면 findByAddressOrderByCnt(String address) 로 검색할 수있다.

 

12). countBy

SQL에서 count를 사용하는것과 같다.

결과의 count를 Return하는 메서드.

저장 메서드

1). save()

레코드들을 저장할 때 사용한다.

insert() 와 update() 기능을 한다.

 

삭제 메서드

1). delete()

레코드들을 삭제할 때 사용한다.

출처 https://zara49.tistory.com/130