[JPA] JPA란❔❔

Umji You·2021년 10월 20일
0

JPA기본

목록 보기
1/6

JPA(Java Persistance API)

  • 자바 진영의 ORM기술 표준을 의미한다.
  • 인터페이스의 모음이다. 즉, 실제로 동작하는 것이 아니다.
  • JAVA에서 제공하는 API를 뜻한다. [ Spring에서 제공하는것이 아니다 ]
    • API는 Application Programming Interface로 쉽게 말하면 서버와 데이터베이스에 대한 출입구 역할을 하고
    • 프로그램과 프로그램 사이에서 원활한 통신을 할 수 있도록 한다.
    • API는 모든 접속을 표준화하여 누구나 동일하게 접근(Access)할 수 있다.
  • ORM은 기본적으로 SQL을 맵핑하는 것이 아닌 JAVA 클래스와 DB테이블을 맵핑한다.

그럼 ORM은 무엇일까?

  • ORM은 Object-relational mapping(객체 관계 맵핑)
  • 객체는 객체대로 설계하고
  • 관계형 데이터베이스는 관계형 데이터 베이스대로 설계하는 것이다.
  • 그래서 ORM은 JAVA의 객체와 DB중간에서 맵핑의 역할을 한다.
    - SQL쿼리를 날려서 사용하는 것이 아니라 메서드로 데이터를 입력하여
    - 자동적으로 SQL을 생성하여 쿼리를 날려준다.

JPA는 애플리케이션과 JDBC 사이에서 동작한다.

image
​ JAVA어플리케이션에서 JPA를 통해 컴파일을 하게되면 JPA 내부에서 JDBC API가 자동적으로 SQL를 만들어서 DB로 날려주게 된다.

  • JDBC는 DB에 접근할 수 있도록 자바에서 제공하는 API이다.

JPA동작 - Insert(저장)

image

  • DAO에서 어떠한 객체를 저장할때 Persist해서 JPA로 넘겨준다. 그러면 JPA에서 객체를 확인하고 조건에 맞으면 Insert SQL을 생성하여 JDBC API를 통해 DB로 날려준다.

JPA동작 - Find(조회)

image

  • 조회를 할때는 Member의 PK값을 id로 하여 JPA로 넘겨준다. Insert와 마찬가지로 JDBC API를 통해 select SQL을 DB로 날려주고 DB에서 결과를 반환하여 Entity객체로 넘겨주게된다.

JPA 특징

  1. 데이터를 객체지향적으로 관리할 수 있기 때문에 개발자는 비즈니스 로직에 집중할 수 있고 객체지향 개발이 가능하다.
  2. 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 생성한다.
  3. 객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistence Query Language)를 지원
  4. JPA는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇가지 기법을 제공하는데 이것을 잘 활용하면 SQL을 직접 사용하는 것과 유사한 성능을 얻을 수 있다.

JPA를 왜 사용해야 하는가?

  • 기존의 SQL 중심적인 개발에서 객체 중심으로의 개발이 가능해진다
  • 간단한 메소드로 CRUD가 가능하여 생산성이 증가한다.
  • 유지보수가 쉬워진다.
    • 기존에는 필드를 변경하게 되면 모든 SQL을 수정해야만 한다.
    • 하지만 JPA로 필드만 추가하게되면 JPA가 SQL을 건드릴 필요가 없어진다.
  • Object와 RDB(관계형 데이터베이스) 간의 패러다임 불일치를 해결해준다.


💡후기

이제부터 JPA스터디 시작...


🔎참고

[Inflearn]김영한 - 자바 ORM표준 JPA 기본편

profile
꾸준한 기록을 하자

0개의 댓글