jiisoo
지수로그
jiisoo
전체 방문자
오늘
어제

블로그 메뉴

  • home
  • Github
  • 알고리즘 문제풀이 저장소
  • 분류 전체보기 (80)
    • Java (1)
    • Spring (30)
    • JPA (15)
    • cs (8)
      • 디자인패턴 (1)
      • 네트워크 (5)
      • Database (1)
      • 운영체제 (1)
    • algorithm (18)
      • 알고리즘 & 자료구조 이론 (12)
      • 알고리즘 풀이 (6)
    • 면접 준비 (0)
    • 회고 (5)
      • ATDD (4)
      • 학습테스트로 배우는 spring 2기 (1)
      • 프로젝트 (0)

인기 글

최근 댓글

최근 글

태그

티스토리

hELLO · Designed By 정상우.
jiisoo

지수로그

[Jpa] JPA 란?
JPA

[Jpa] JPA 란?

2023. 4. 25. 18:07

JPA 란 무엇일까?

  • JPA 란 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이라고 설명할 수 있다.
  • 그렇다면 여기서 말하는 ORM 이란 무엇일까?

 

ORM (Object Relational Mapping) 이란 

  • 객체와 테이블을 매핑하여 패러다임의 불일치를 개발자 대신 해결해 주는 기술이다.
  • 자세히 설명하자면, 애플리케이션 Class 와 RDB(Relational DataBase)의 테이블을 매핑 (연결)한다는 뜻인데
  • 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 볼 수 있다.

 

그렇다면 왜 JPA 를 사용해야 하는 걸까? 

- 생산성을 높여준다. 

  • JPA를 자바 컬렉션에 저장하듯이 JPA에게 저장할 객체를 전달하면 INSERT SQL을 작성하고, JDBC API를 사용하는 반복적인 일을 JPA 가 대신 처리해 준다.
  • JPA 가 매핑된 관계를 이용하여 SQL을 생성해주는 일을 대신하게 된다면 개발자는 어떤 SQL 을 실행하면 될지 생각만 하면 된다.

 

- 유지보수

  • SQL 중심이 아닌 객체 중심으로 개발을 할 수 있어, 생산성이 좋아지고 유지보수도 수월해진다.

 

 

- 패러다임의 불일치 해결

  • 상속, 연관관계, 비교하기 같은 패러다임의 불일치 해결

 

  • 상속 
    • Java에서는 상속관계가 존재하지만, 데이터베이스에서는 상속관계를 지원하지 않는다. 그렇다면, JPA는 어떤 방식으로 상속관계를 해결할까?
    • 데이터베이스에는 상속관계는 없지만, 비슷하게 풀어낼 수 있는 방법이 존재한다.
      • 예를 들어 부모 같은 테이블을 하나 생성하고, 그 밑에 자식을 두면서 데이터를 분리해 놓는다.
        • 필요한 경우에는 join을 사용하여 가져올 수 있다.
      • 이 차람 table에서 데이터 하나를 꺼내오려면 수많은 과정을 거쳐야 하지만 JPA는 객체 중심의 개발을 할 수 있도록 도와주기 때문에 보다 편리하게 가져올 수 있다.
     

 

- 성능 

  • JPA의 성능 최적화 기능을 사용하게 되면 1차 캐시와 동일성을 보장받는다.
    • 같은 트랜잭션 안에서는 같은 엔티티를 반환받는다는 것이다. 따라서 조회 성능이 향상된다.

 

 

- 데이터 접근 추상화와 벤더 독립성 

  • 특정 데이터 베이스 기술에 종속되지 않도록 도와준다.
  • 데이터베이스를 변경하면 JPA에게 다른 데이터를 사용한다고 알려주어 , 간편하게 다른 데이터베이스를 이용할 수 있도록 도와준다.

 

 

<자바 ORM 표준 JPA 프로그래밍 - 기본편 을 참고하여 작성하였습니다.>

'JPA' 카테고리의 다른 글

[Jpa] 다대일[N:1], 일대다[1:N] 에 대해서  (0) 2023.05.09
[Jpa] 연관관계 매핑 기초  (0) 2023.05.01
[Jpa] 엔티티 매핑  (0) 2023.04.30
[Jpa] 영속성 컨텍스트  (0) 2023.04.27
[Jpa] @OneTOOne에 대해서  (0) 2023.04.26
    'JPA' 카테고리의 다른 글
    • [Jpa] 연관관계 매핑 기초
    • [Jpa] 엔티티 매핑
    • [Jpa] 영속성 컨텍스트
    • [Jpa] @OneTOOne에 대해서
    jiisoo
    jiisoo

    티스토리툴바