jpa가 먼지 모르는사람은
https://yjkim-dev.tistory.com/5
JPA 란? 영속성 컨텍스트란?
국비 학원 다니신분들은 80%이상은 자바 퍼시스턴스 프레임워크인 MYBATIS를 사용했을거라고 생각함. 본인도 학원에서 MYBATIS를 사용했고, 회사를 다니게되면서 JPA라는 것에 대해 처음으로 접했음
yjkim-dev.tistory.com
여기 보고오셈.
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()쓰고 어쩌구저쩌구 이렇게 복잡한 일들을
인터페이스 하나로 해결된다.!
굳굳
참고.
끝
'JPA' 카테고리의 다른 글
Insert Query 줄이기(성능개선) (0) | 2023.04.10 |
---|---|
N+1 문제 (0) | 2023.03.16 |
JPQL 사용 시 DTO Mapping 하는 법 (1) | 2023.02.24 |
Entity의 null값으로 인해 default 설정 반영이 안될 때 (0) | 2022.12.14 |
JPA 란? 영속성 컨텍스트란? (0) | 2022.04.08 |