공부/JPA

JPA란?

Stair 2024. 11. 25. 14:36
반응형

애플리케이션은 객체 지향 언어로 개발한다.

데이터 베이서는 관계형 DB를 주로 사용한다.

 

지금 시대는 객체를 관계형 DB에 보관하고 관리하는 시대이다.

그런데 이 객체를 관계형 DB에 보관하려면 SQL을 엄청나게 사용해야 한다.

이 문제가 SQL 중심 개발의 문제점이다.

 

관계형 데이터베이스는 기본적으로 상속 관계가 없다.

관계형 데이터베이스에서는 슈퍼타입, 서브타입의 관계를 통해 상속 관계를 풀어낸다.

하지만 여기서 내가 Album을 테이블에 저장하고 싶다고 하면, ALBUM 테이블과 ITEM 테이블에

insert into item

insert into album을 하여 두번 insert를 해주어야 한다.

객체가 더 복잡해지고 각각의 객체가 점점 많아진다면, 쿼리가 정말 복잡해 질 것이다.

 

 

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

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

  - 객체는 객체대로 설계한다.

  - 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다.

  - ORM 프레임워크가 중간에서 매핑한다.

  - 대중적인 언어에는 대부분 ORM 기술이 존재한다.

 

 

JPA도 결국 SQL을 사용해야 하기때문에 JDBC 를 사용해야 한다. 하지만 다른 프레임워크(Mybatis 등) 과 차이가 있다면

JPA는 엔티티를 작성해서 JPA에 던지기만 하면 JPA가 알아서 이 회원 객체를 분석하여 insert SQL을 만든 후 JDBC API를 사용해서 이걸 DB Insert Query까지 다 날려준다.

 

마치 자마 Collection 코드를 저장하듯이 코드 한줄만 넣으면 된다.

반대로 객체를 찾을때도 마찬가지이다. ID만 JPA에 던져주면 JPA가 엔티티를 분석하여 Select 쿼리를 생성하고, JDBC API를 사용하고 ResultSet을 매핑해주고, 패러다임 불일치까지 해결하여 준다.

 

JPA는 표준 명세이다.

- JPA는 인터페이스의 모음

- JPA 2.1 표준 명세를 구현한 3가지 구현체

우리는 JPA표준 인터페이스 구현체에서 Hibernate를 쓴다.

 

그렇다면 이 JPA를 왜 사용해야 할까?

1. SQL 중심적인 개발에서 객체 중심으로 개발할 수 있게 된다.

2. 생산성과 유지보수가 뛰어나다.

3. 패러다임의 불일치를 해결해준다.

4. 성능 향상에 탁월하다.

5. 데이터 접근 추상화와 벤더 독립성이 있다.

6. 자바 표준이다.

 

 

 

 

 

 

 

 

 

반응형

'공부 > JPA' 카테고리의 다른 글

JPA 영속성 관리  (1) 2024.11.28
JPA 설정하기  (0) 2024.11.26
애플리케이션 구현(도메인 개발)  (0) 2024.11.21
도메인 분석 설계  (2) 2024.11.18
프로젝트 환경 설정  (1) 2024.11.17