• JPA 2022.12.28

** spring data jpa 에 관한 설명은 아래 링크 **

https://rainover0824.tistory.com/38

 

JPA, Spring Data Jpa

JPA 핵심 : Persistence 클래스 EntityManager에서 제공하는 API 사용 ex) @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; public void save(Order order){ em.persist(order); } public Order findOne(

rainover0824.tistory.com

 

 

JPA란?

Java Persistence API 

 

자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음

어플리케이션과 JDBC 사이에서 동작

 

 

 

 

 

 

ORM?

자바의 객체와 RDB를 매핑

DB의 특정 테이블이 자바 객체로 매핑되어 SQL을 하나하나 작성하지 않고 객체로 구현 가능

어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 기술

 

 

장점

  • SQL문이 아닌 Method를 통해 DB 조작 가능, 개발자가 객체 모델을 이요하여 로직 구성하는데 집중 가능
  • Query와 같이 필요한 선언문, 할당 등의 부수적 코드 필요 X
  • 객체지향적인 코드 작성 가능 >> 생산성 증가
  • 매핑 정보가 Class로 명시되어있기 때문에 ERD 의존도 낮고 유지보수, 리팩토링에 유리
  • Ex) DB를 변경하는 경우 ORM 사용한다면 쿼리 수정할 필요 X

 

단점

  • 프로젝트 규모가 크고 복잡한 설계일 경우 속도 저하, 일관성을 무너뜨리는 문제가 생길 수 있음
  • 복잡하고 무거운 Query는 속도를 위해 별도 튜닝이 필요, 따라서 결국 SQL을 사용해야 할 수 도 있음

 

 

 

JPA 사용하는 이유?

JPA가 알아서 반복적인 CRUD SQL을 처리

매핑된 관계를 이용해서 SQL을 생성하고 실행

SQL 사용이 필요해지는 경우 Native SQL이라는 기능을 통해 직접 SQL작성도 가능

 

SQL이 아닌 객체 중심으로 개발할 수 있다는 것이 가장 큰 장점

생산성, 유지보수성 증대

 

 

JPA 동작과정

JPA는 어플리케이션과 JDBC 사이에서 동작

개발자가 JPA를 사용하면 JPA내부에서 JDBC API를 사용하여 SQL 호출, DB와 통신

개발자가 직접 JDBC API를 사용 X

 

 

JPA 저장

1. DB에 저장하고 싶은 데이터를 담고 있는 객체를 (ex. 회원 정보를 담고있는 member 객체 같은) JPA에 전달

2. JPA는 객체를 분석, Insert SQL 생성

3. JDBC API 사용하여 SQL을 DB에 전달 

 

 

JPA 조회

1. 조회하고자 하는 객체의 PK값을 JPA에 전달

2. JPA가 엔티티 매핑 정보(@Entity) 를 바탕으로 select SQL 생성

3. JDBC API 사용하여 SQL DB에 전달

4. DB로부터 결과를 전달받고, 전달받은 결과를 객체에 매핑

 

 

 

JPA 수정

 

JPA는 수정 메소드 제공 X

1. 위의 조회 기능을 사용해서 매핑된 객체에 조회된 정보를 담은 후, 매핑된 객체에서 변경하고자 하는 값을 변경

2. 커밋하게 되면 DB에 update SQL 전달

3. 변경된 값 DB 반영

 

** Spring 에서 사용하는 JPA는 JPA를 이용하는 spring-datat-jpa 프레임워크!!

JPA와는 다름

'끄적 > BE' 카테고리의 다른 글

Persistence Context (영속성 컨텍스트)  (0) 2023.01.01
Spring MVC  (0) 2022.12.29
JPA, Spring Data Jpa  (0) 2022.12.28
Token을 사용한 로그인 인증  (0) 2022.12.28
JWT  (0) 2022.12.28

+ Recent posts