4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

스프링JPA- Spring Data JPA(ORM) Hibernate ~! (페이징,정렬 기본)

르무엘 2022. 7. 19. 15:27

JPA는 Java Persistence API로 자바 ORM기술에 대한 표준명세이다.

JPA는 표준명세이고 , 이를 실제 구현한 프레임워크 중 사실상 표준이 하이버네이트(Hibernate)이다.

스프링부트에서는 기본적으로 하이버네이트를 사용중이다.

 

 JPA는 Entity 저장, 조회를 약속된 표준으로 처리해준다.

Entity(디비테이블) 설정시

아래와 같은 어노테이션을 두어

Entity 관계설정도 가능하다.

 

Spring Data JPA

 

ID 외의 필드에 대한 추가 기능은 interface 만 선언해 주면, 구현은 Spring Data JPA 가 대신!

Product Dto의 Page가 선언된 findAllByUserId 인터페이스가 완성되었다.

Users Dto의 3가지 인터페이스가 있다.

Folder Dto에서 List와 boolean 이 선언되 인터페이스 설정 된 것을 볼수 있다.(나머지 과정은 JPA가 대신해준다.)

 

Spring Data JPA는 페이징 및 정렬을 편리하게 사용하게 해준다.

 

Product Dto 하기와 같이 @ManyToMany 즉 다대다 어노테이션을 걸면

다양한 제품에 다양한 폴더 관계가 형성된다.

 

 

Folders Dto에 하기와 같이 @ManyToOne 즉 다대일 어노테이션을 걸면

다양한 폴더에 하나의 유저의 관계가 형성된다.

하기와 같이 Product Service에

페이징과 정렬관련 로직을 넣었다.

폴더를 클릭시에도 정렬이 되어야 하기에

폴더 클릭시에도 페이징과 정렬이 되게 처리한다.

 

 

@Transactional 어노테이션은 트랜잭션처리 과정을 ACID원칙하에

원자성,고립성,일관성,지속성을 확실하게 가지게 한다.

 

폴더 추가시에 제품과 폴더의 상관관계에 변화시 일관성을 유지하기 위해서다.

LIST