luna001631.velog
로그인
luna001631.velog
로그인
[SpringBoot] JPA Repository란?
박정현
·
2023년 10월 26일
팔로우
2
JPA
JPA Repository
Springboot
스프링부트
🌿스프링부트 기능
목록 보기
12/12
🟣 Repository
(1) Repository란?
Entity에 의해 생성된 DB에 접근하는 메소드(ex.findAll(), save())들을 사용하기 위한 인터페이스
위에서 엔티티를 선언함으로써 데이터베이스 구조를 만들었다면, 여기에 CRUD를 해주는 기능
하나의 엔티티 당 하나의 레파지토리 필요하다
레파지토리는 interface이고 JpaRepository을 상속받는다.
추상메소드를 확인하면 사용할 수 있는 메소드들을 확인할 수 있다.
Dao와 동일한 개념의 인터페이스
미리 검색 메소드를 정의해 두는 것
메소드를 호출하는 것만으로 데이터 검색을 할 수 있게 되는 것
Repository객체를 이용하여 CRUD를 할 수 있다.
Spring JPA에서 제공하는 Repository라는 인터페이스를 정의해 해당 Entity의 데이터를 사용
위의 그림의 노란박스 부분을 확인하자
(2) Repository 기능
회원관리 CRUD
JDBC가 없는 것이 아니라 JPA가 내부적으로 JDBC를 실행시키는 것임
save() : Entity등록 혹은 수정 레코드 저장 (insert, update)
repository.save(Entity)
두 가지 의미가 있음 → 둘 중 하나를 선택할 수 있음
insert into 테이블 values();
update 테이블 set where Id=?;
findOne(): primary key로 레코드 한 건 찾기
fineAll()
select * from 테이블;
전체 레코드 조회
findById()
select * from 테이블 where id=?; 상세조회(회원, 상품, 게시글)
delete(Object Entity): Entity 삭제
delete from where ;
count(): 전체 엔티티의 개수를 리턴함
existsById()
이렇게 실행된 코드를 보이게 하는 것이 Hibernate에서 설정할 수 있음
이 외의 메소드들은 여기서 확인이 가능하다.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories
(3) Optional
Repository를 사용하다 보면 Optional로 반환해야 할 때가 있다.
Optional는 있어도 혹은 없어도 정상 실행하라는 뜻이다.
Optional → isPresent() : 존재하느냐?
Optional → !isPresent() : 존재 않느냐?
(3) JPQL
repository에 없는 메소드 즉, 복잡한 쿼리문 같은 경우는 직접 메소드를 추가하여 사용할 수도 있다. (JPQL, Native…)
직접 쿼리문을 작성할 수도 있지만 LIke Queries in Spring JPA Repositories 예약어를 이용하여 쿼리문을 추가하지 않고 메소드만 추가하여 사용할 수도 있다.
① Repository에 쿼리문 추가
findByIdList()는 직접 쿼리문을 작성함
member_id에 해당하는 회원의 모든 게시물 조회
findByContaining()는 예약어로 메소드만 추가해 주었음
해당 값에 들어가 있는 내용의 모든 목록조회
② Service에서 메소드 사용
findByList()
findByContentContaining()
박정현
개발을 개발괴발하지 않기 위한 노력
팔로우
이전 포스트
[Database] JPA Entity에 대해 알아보자
0개의 댓글
댓글 작성