Spring Data JPA 맛보기 (3)



지난 번 포스팅에서 작성한 코드에 대한 테스트 코드를 만들어보겠습니다.





1. 테스트 클래스 생성




/spring-data-sample/src/test/java/kr/co/vicki/sample/spring/data/jpa/repository/IMemberRepositoryTest.java




위의 테스트 코드를 실행하니 아래와 같은... 시퀀스가 없다고 합니다.








하이버네이트 용 시퀀스를 생성합니다.





코드를 실행하면 결과는 체크가 불가능하지만 녹색바가 뜨기 때문에 정상 동작한다고 생각합니다 -ㅅ-;;;





2. JpaRepository 의 이용









JpaRepository 는 기존에 사용하였던 CrudRepository 와 PagingAndSortingRepository 를 상속받는 구조입니다.


기존에 사용하였던 CRUD 외에 페이징과 소팅도 지원을 하며 메소드 이름을 통해 쿼리 제너레이션이 가능합니다.


IMemberRepository 의 superclass 를 JpaRepository 로 변경한 후 아래와 같이 메소드를 추가합니다.





findByMemberId(String memberId) 메소드는 메소드 이름 통해 쿼리를 생성하여 실행되게 됩니다.



select m from Member m where m.memberId = ?1




아래와 같은 규칙으로 메소드 이름으로 쿼리가 생성되니 참고를...















































































Keyword









Sample





JPQL snippet




And



findByLastnameAndFirstname



… where x.lastname = ?1 and x.firstname = ?2



Or



findByLastnameOrFirstname



… where x.lastname = ?1 or x.firstname = ?2



Between



findByStartDateBetween



… where x.startDate between 1? and ?2



LessThan



findByAgeLessThan



… where x.age < ?1



GreaterThan



findByAgeGreaterThan



… where x.age > ?1



IsNull



findByAgeIsNull



… where x.age is null



IsNotNull,NotNull



findByAge(Is)NotNull



… where x.age not null



Like



findByFirstnameLike



… where x.firstname like ?1



NotLike



findByFirstnameNotLike



… where x.firstname not like ?1



OrderBy



findByAgeOrderByLastnameDesc



… where x.age > ?1 order by x.lastname desc



Not



findByLastnameNot



… where x.lastname <> ?1














SQL 없이 직관적으로 코딩이 가능한 Spring Data JPA!!! 실제 개발 프로젝트에 적용시키까지는 많은 시간이 걸리겠지만 컨셉은 아주 상콤합니다!!!


댓글

가장 많이 본 글