JPA 메서드 정리

egov

Jpa레파지토리 구현

우선 JpaRepository<T, T> 를 상속받은 레파지토리 인터페이스가 있을때 첫번째 T는 사용하고자 하는 도메인의 클래스타입이고 두번째 T는 그 도메인에서 @Id를 가지고있는 변수의 클래스타입이다.


@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private Date regdate;

    get~set~
}
이와 관련된 Repository는

public interface StudentRepository extends extends JpaRepository<Student, Long> {
}
이런식으로 된다.

JPA 메서드(검색)

    마이바티스를 이용할땐 생성,삭제,수정,검색 등 쿼리를 많이 작성해야했지만 JPA를 이용하면 그럴필요가 없다.

    프로퍼티 명명규칙에 따라 Jparepository를 확장한 클래스에서 '쿼리' 메서드를 만들어 쓰면 된다.
    예를들어 Student클래스엔 name이란 프로퍼티가 있고 '영수' 라는 이름을 가진 학생을 조회할때는 다음과 같다.

    public List<Student> findByNameContaining(String name);
    이 메서드는 select* from Student where name like %?1% 로 자동 번역되고
    ?1파라미터 자리에는 '영수'가 들어간다.
    결국 다음쿼리를 실행하는 셈이다.
    select * from student where name like %영수%

JPA 메서드(날짜검색)

public List<Student> findByRegdateAfter(Date date);

실행하면 역시 select * from student where regdate > ?1 쿼리로 번역된다.

임의의 쿼리

    @Query("select name from student s where s.name like %?1%")
    List<Student> findByCustomQuery(String name);

방법은 이렇게 여러가지가 있다.

효준's profile image

효준

2018-06-26 15:03

다른글 보러가기

git 사용법3

이전 포스트

JWT(Json Web Token)

다음 포스트