본문 바로가기

JPA

Spring data jpa 란?

728x90
반응형
SMALL

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()쓰고  어쩌구저쩌구 이렇게 복잡한 일들을

인터페이스 하나로 해결된다.!

 

굳굳

 

참고.

 

 

728x90
반응형
LIST

'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