[JPA 프로그래밍] 1. JPA 란 무엇인가?

반응형
728x90
반응형

ORM

ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매핑한다. ORM 프레임워크는 객체와 테이블을 매핑한다.

 

ORM 프레임워크 사용 장점

1) 객체를 데이터베이스에 저장할때 INSERT SQL을 직접 장성하지 않고 객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장한다.

2) 개발자가 데이터 중심인 관계형 데이터베이스를 사용하더라도 객체지향 어플리케이션 개발에 집중할 수 있다. 

 

 

하이버네이트

대부분의 패러다임 불일치 문제를 해결해주는 ORM 프레임워크다.

하이버네이트(hibernate.org)라는 오픈소스 ORM 프레임워크가 등장하면서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌는데, 이것이 바로 JPA다.

 

패러다임 불일치란?

추상화, 상속, 다형성과 같은 특성을 가진 객체지향과 이러한 특성이 없는 데이터베이스는 서로 기능과 표현방법이 모두 다르다. 이것을 객체와 관계형 데이터베이스의 패러다임 불일치 문제라고 한다.

 

 

JPA

JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다.

JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야하는데, 가장 대중적인건 하이버네이트다.

https://dingdingmin-back-end-developer.tistory.com/entry/Spring-data-JPA0-JPA%EB%9E%80

 

JPA 역할

  • Entity 분석
  • INSERT SQL 생성
  • JDBD API 사용
  • 패러다임 불일치 해결

 

JPA 장점

  • 특정 구현 기술에 대한 의존도를 줄일 수 있다.
  • 다른 구현 기술로 손쉽게 이동할 수 있다.

 

 

왜 JPA를 사용해야할까?

1) 생산성

  • 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체만 전달하면 JPA가 대신 처리해준다.
jpa.persist(member); // 저장
Member member = jpa.find(memberId); // 조회
  • 반복적인 코드와 CRUD용 SQL을 개발자가 직접 작성하지 않아도 된다.
  • CREATE TABLE과 같은 DDL 문을 자동으로 생성해줄 수 있다.

 

 

2) 유지보수

  • SQL을 직접 다루면 엔티티에 필드를 하나만 추가해도 그에 해당하는 SQL과 결과를 매핑하기위한 JDBC API 코드를 모두 변경해야한다. JPA를 사용하면 이런 과정을 JPA가 대신 해준다. 
  • JPA가 패러다임의 불일치 문제를 해결해주므로 객체지향 언어가 가진 장점들을 활용해서 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계할 수 있다.

 

 

3) 성능

  • JPA는 애플리케이션과 데이터베이스 사이에서 동작하므로 최적화 관점에서 시도해볼 수 있는 것들이 많다.
String memberId = "test"

Member member1 = jpa.find(memberId); // 조회
Member member2 = jpa.find(memberId); // 조회

같은 회원을 두번 조회하는 코드다. 

JPA를 사용하지 않았을땐 두번의 SELECT 쿼리가 수행되지만 JPA를 사용하면 한번만 SELECT 쿼리가 수행되고, 그 다음은 이미 조회한 회원 객체를 재사용한다.

 

 

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

  • JPA는 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공해서 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 한다. 
  • 데이터 베이스 변경도 유연하게 처리가 가능하다. JPA에게 다른 데이터베이스를 사용한다고 알려주기만 하면 된다.

 

 

반응형

Designed by JB FACTORY