[JPA] JPA란 ?

김승연·2023년 6월 17일
0

JPA (Java Persistence API)

  • 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음
  • JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate

💡 ORM (Object-relational mapping)

객체 관계 매핑
->객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다
ORM프레임워크가 중간에서 매핑해준다.

📍 JPA의 동작 과정

  • JPA는 애플리케이션과 JDBC 사이에서 동작한다.
    • 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용해 SQL을 호출하여 DB와 통신한다.
    • 개발자가 직업 JDBC API를 쓰는 것이 아니다.

저장 과정

EX) MemerDAO에서 객체를 저장하고 싶을 때

  • 개발자는 JPA에 Member 객체를 넘긴다.
  • JPA는
    • 1) Member엔티티를 분석
    • 2) INSERT SQL 생성
    • 3) JDBC API를 사용해 SQL을 DB에 날린다.

조회 과정

  • EX) MemerDAO 객체를 조회하고 싶을 때
    • 개발자는 member의 pk값을 JPA에 넘긴다.
    • JPA는
    • 1) 엔티티의 매핑 정보를 바탕으로 적절한 SELECT SQL을 생성
    • 2) JDBC API를 사용해 SQL을 DB에 날린다.
    • 3) DB로부터 결과를 받아온다.
    • 4) 결과(ResultSet)를 객체에 모두 매핑한다.
  • 쿼리를 JPA가 만들어 주기 때문에 Object와 RDB간의 패러다임 불일치를 해결할 수 있다.

패러다임 불일치란 ? 💡

db는 철저히 데이터 중심으로 설계되어 있으며 객체와 db는 목적이 다르다.
패러다임의 불일치는 이렇게 객체(OOP)와 관계형 DB의 데이터 표현방식과 다루는 방법이 달라 일어나는 현상이다.
객체와 db 양쪽의 불일치를 해결해줘야 한다. 그렇지 않다면, db에 의존적이게 코딩을 하게 될 수 밖에 없다.

🤔 JPA를 왜 사용해야 할까?

1. SQL 중심적인 개발에서 객체 중심으로 개발

2. 생산성

  • 간단한 CRUD
    - 저장 : jpa.persist(member)
    - 조회 : Member member = jpa.find(memberId)
    - 수정 : member.setName("변경할 이름")
    - 삭제 : jpa.ermove(member)

  • 수정시엔 객체를 변경하면 자동으로 DB에 UPDATE Query가 나간다.

3. 유지보수

  • 기존 : 필드 변경 시 모든 SQL 수정 필요
  • JPA : 필드만 추가하면 JPA가 SQL을 처리해줌

참고 자료

https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html

0개의 댓글