JPA

김영환·2023년 10월 6일
0

JPA

목록 보기
1/4

JPA 들어가기 전 ORM이란?

1. ORM이란?

  • Object-relational mapping(객체 관계 매핑)

  • 객체는 객체대로 설계

  • 관계형 데이터베이스는 관계형 데이터베이스대로 설계

  • ORM프레임워크가 중간에서 매핑

  • 대중적인 언어는 대부분 ORM기술이 존재

  • 우리가 일반적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며 기술적으로는 어플리케이션의 객체를 RDB테이블에 자동으로 영속화 해주는 것이라고 보면된다.

    장점은?

  • SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비지니스 로직을 구성하는 데만 집중할 수 있다.

  • Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임

  • 객체지향적인 코드 작성이 가능하다. 오직 객체지향적 접근만 고려하면 되기 때문에 생산성 증가

  • 매핑하는 정보가 Class로 명시되었기 때문에 ERD를 보는 의존도를 낮출 수 있고 유지보수 및 리팩토리에 유리

  • MySQL로 데이터베이스를 사용하다가, PostgreSQL로 변환한다고 가정해보면, 새로 쿼리를 짜야하는 경우가 생기는데, 이런 경우에 ORM을 사용한다면 쿼리를 수정할 필요가 없음

단점

  • 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우, 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있음
  • 학습비용 비쌈
  • 복잡하고 무거운 Query는 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.

JPA

  • Java Persistence API
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
  • 자바 진영의 ORM기술 표준
  • JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 된다.
  • JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 Mapping해준다.
  • JPA는 내부적으로 JDBC API를 활용하는데, 개발자가 직접 JDBC API를 활용하지 않는다
  • 이 때, JPA를 활용하면 모든 SQL에 대해 개발자 대신 JPA가 자동으로 해결해 준다는 점에서 생산성을 크게 높인다.
  • 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현함.

데이터베이스 방언

  • JPA는 특정 데이터베이스에 종속되지 않는다.
  • 페이징 : oracle = rownum, MySQL = limit
  • 가변문자 : oracle = varchar2, MySQL = varchar
  • SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능
    -> oracle을 쓴다고하면 oracle 이라고하는 사투리를 써서 쿼리를 작성하란 뜻

중요한 어노테이션

@Entity

  • JPA가 관리할 객체

@Id

  • 데이터베이스 PK와 매핑
profile
개발

0개의 댓글