JPA 5

[Spring Boot] @Query 어노테이션을 이용한 Spring JPA 예제

안녕하세요. hia의 개발 story입니다. 장점이 많은 Spring JPA이지만 복잡한 쿼리를 사용할 때에는 사용이 불편해집니다. 이런 불편함을 감소시키기 위해 @Query 어노테이션을 이용하여 JPQL문을 실행합니다. JPQL은 일반 SQL처럼 사용가능하기 때문에 좀 더 복잡한 구문을 사용할 수 있습니다. @Query를 이용한 select 구문 테스트 간단하게 select하는 예제를 보도록 하겠습니다. 아래와 같이 Repository 인터페이스에 @Query("쿼리문") 어노테이션을 이용하여 select 하는 함수를 만들어줍니다. public interface SampleRepository extends JpaRepository { @Query("select s from Sample s order b..

Springboot 2023.06.13

[Spring Boot] 쿼리메서드 - deleteBy 사용하기

안녕하세요. hia의 개발 story입니다. 이번에는 쿼리 메서드를 이용하여 메서드 이름을 'deleteBy'로 시작하면 특정 조건에 맞는 데이터를 삭제할 수 있습니다. 이를 위해 만들어 둔 Repository interface에 아래와 같이 메서드를 작성해 줍니다. public interface SampleRepository extends JpaRepository { void deleteSampleByIdLessThan(Long l); } 테스트 코드를 작성하여 메서드를 테스트해보도록 합시다. @Commit @Transactional @Test public void testDeleteQueryMethod(){ sampleRepository.deleteSampleByIdLessThan(10l); } 이때..

Springboot 2023.06.12

[Spring Boot] JpaRepository에서의 쿼리메서드

안녕하세요. hia의 개발 story입니다. Spring JPA의 경우 여러 가지의 검색 조건에 필요한 기능들을 제공합니다. 쿼리 메서드 : 메서드가 쿼리의 구문으로 처리되도록 하는 기능 @Query : SQL처럼 만들기 위해 엔티티 클래스의 정보를 이용해 쿼리를 작성하는 기능 Querysl 등의 동적 쿼리 처리 기능 오늘은 이 중에서 쿼리 메서드에 대해서 공부하려고 합니다. 쿼리 메서드 쿼리 메서드 문서는 아래 페이지에서 찾아볼 수 있습니다. 처음부터 문서만 봐서는 활용하기 어려우니 기초적인 부분을 정리해보려고 합니다. Spring Data JPA - Reference Documentation Example 119. Using @Transactional at query methods @Transacti..

Springboot 2023.03.31

[Spring Boot] JpaRepository의 페이징 및 정렬 처리 하기

안녕하세요. hia의 개발 story입니다. 오늘은 JpaRepository를 이용해 페이징 처리와 정렬 처리를 해보려고 합니다. 지난번에 만든 테이블에는 데이터가 부족하니 sample 테이블에 페이징을 볼 수 있는 데이터를 50개 정도 넣도록 하겠습니다. 이제 CRUD 테스트를 위해 만들었던 SampleRepositoryTests를 이용해 계속 테스트를 해보겠습니다. 페이징 처리 : findAll() 페이징 처리는 findAll() 메서드를 이용하면 됩니다. 이때 findAll( )의 매개변수로 Pageable을 사용하면 Page 로 반환을 하게 되어있습니다. 아래의 소스로 페이징 되어 나오는 데이터를 확인할 수 있습니다. @Test public void pageTest(){ Pageable pagea..

Springboot 2023.03.22

[Spring Boot] JpaRepository를 이용한 CRUD 테스트 예제 공부

안녕하세요. hia의 개발 story입니다. 오늘은 저번에 만들었던 Sample 테이블을 이용하여 JpaRepository 테스트를 해보려고 합니다. JpaRepository를 이용하면 SQL 없이 CRUD 작업을 할 수 있습니다. 개발자에게는 엄청나게 시간을 아껴주는 고마운 친구인 것이죠. JpaRepository CRUD 메서드 insert : save(엔티티 객체) select : findById(키 타입), getOne(키 타입) update : save(엔티티 객체) delete : deleteById(키 타입), delete(엔티티 객체) 특이한 점은 insert와 update 모두 save()라는 메서드를 사용하는데 이는 JPA가 메모리상에서 객체를 비교하고 없으면 insert, 존재하면 u..

Springboot 2023.03.21