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()
레코드들을 삭제할 때 사용한다.
계속 추가할 예정이다.
'JPA' 카테고리의 다른 글
[JPA] @Embedded @Embeddable 이란? 예제 (0) | 2021.08.17 |
---|---|
[JPA] No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer 오류 (0) | 2021.08.11 |
[JPA] 관계 매핑 기초 정리 (0) | 2021.07.23 |
[JPA] SpringBoot + JPA @EnableJpaAuditing 이란? (0) | 2021.07.23 |
[JPA] SpringBoot Jpa 에서 Querydsl 세팅시 Qclass 못찾는 경우 (0) | 2021.07.22 |