아카이브

[스프링 데이터 JPA] 스프링 데이터 JPA 3. 쿼리 메서드 본문

Spring/스프링 데이터 JPA

[스프링 데이터 JPA] 스프링 데이터 JPA 3. 쿼리 메서드

주멘이 2021. 1. 16. 22:50

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v

docs.spring.io

스프링 데이터 JPA에서 지원하는 키워드

  • And, Or
  • Is, Equals
  • LessThan, LessThanEqual, GreaterThan, GreaterThanEqual
  • After, Before
  • IsNull, IsNotNull, NotNull
  • Like, NotLike
  • StartingWith, EndingWith, Containing
  • OrderBy
  • Not, In, NotIn
  • True, False
  • IgnoreCase  

쿼리 찾아쓰기

  •  엔티티에 정의한 쿼리 찾아 사용하기 JPA Named 쿼리
    •  @NamedQuery
    •  @NamedNativeQuery
  •  리포지토리 메서드에 정의한 쿼리 사용하기
    •  @Query
    •  @Query(nativeQuery=true)

 

@NamedQuery

@NamedQueries({
        @NamedQuery(name = "all_post", query = "SELECT p FROM Post AS p"),
        @NamedQuery(name = "Post.findByTitle", query = "SELECT p FROM Post AS p WHERE p.title = ?1")
})
@Entity
public class Post extends AbstractAggregateRoot<Post> {}

@Query 

    @Query("SELECT p FROM Post AS p WHERE p.title = ?1")
    List<Post> findByTitle(String title);