Spring data jpa 란?
jpa가 먼지 모르는사람은
https://yjkim-dev.tistory.com/5
여기 보고오셈.
Spring Data JPA가 뭘까?
JPA를 한 단계 더 추상화 시켜 개발 용이성을 상당히 올려주는 인터페이스임.
걍 JPA를 더 편리하게 쓰게 해주는 인터페이스를 제공해준거라 인터페이스만 가따쓰면됨.
예시를 보자.
//JpaRepository를 상속받음
public interface MemberRepository extends JpaRepository<Member,Long>
MemberRepository는 JpaRepository를 상속받았다. (JpaRepository 는 제공된 인터페이스임 걍 가따쓴거)
JpaRepository를 타고들어가보면!!!!!
기본적으로 적용되어있는 메소드들이 음청 많음.
여기서 가따쓰기만 하면됨
예를들어.
1.findAll(); => 직역하면 모두 찾겟다. 임
private final MemberRepository memberRepository;
memberRepository.findAll(); //Member 테이블에 있는 디비정보를 모두 찾겠다.
2. findAllById(); => 직역하면 해당 id를 가진 Member 테이블에 있는 디비정보를 모두 찾겠다.
private final MemberRepository memberRepository;
memberRepository.findAllById(id);//파라미터에 담긴 id로 Member 테이블에 있는 디비 정보 모두조회해옴.
3. findById(); => 직역하면 해당 id를 가진 Member테이블 하나만 조회
private final MemberRepository memberRepository;
memberRepository.findById(id);//파라미터에 담긴 id로 Member 테이블에 있는 디비 정보 하나만 조회해옴.
4. save(); => 직역하면 세이브. 저장.
private final MemberRepository memberRepository;
Member member= new Member();
member.setName("천재");
member.setAge(23);
memberRepository.save(member);//member에 들어있는 정보를 디비에 저장한다.!
5. deleteById(); => 직역하면 해당id를 가진 데이터만 지운다.
private final MemberRepository memberRepository;
memberRepository.deleteById(id);//id 를 가진 데이터를 지운다.
등등이 있다.
더 신기한거는
기본제공하는 jpaRepository에서는 Id로만 조회해서 삭제,수정,조회를 할수있지만.
뭐 예를들어
member의 Name으로 조회하고싶다. 이러면
public interface MemberRepository extends JpaRepository<Member,Long> {
Member findByName(String name);
}
Member findByName(String name); => 적어주면 JPA가 자동으로 메서드를 만들어서 name으로 조회할수있다.
파라미터의 name값이 뭐인~? 데이터 조회해와! 라는뜻임.
대신 조건이 있음
Member 엔티티를 만들때. 그안에 칼럼명을 맞춰줘야된다.
위에 같은 경우 findBy [Name] 으로 만들어줬으니 Member 테이블에 name의변수를 가진 칼럼이 있어야 한다.
위에 그림은 JPA , Hibernate, Spring Data JPA 의 관계를 나타낸 그림임.
Spring Data JPA를 쓰면 일반 JPA에서 EntityManager 생성해서 엔티티관리하고 persist()쓰고 어쩌구저쩌구 이렇게 복잡한 일들을
인터페이스 하나로 해결된다.!
굳굳
참고.
끝