[Spring 개념] 2. JPA 개념

deannn.Park·2021년 4월 11일
0

Spring 개념

목록 보기
2/4
post-thumbnail

JPA는 Java Persistence API이다.

Persistence(영속성)

  • 데이터를 생성한 프로그램이 종료되더라도 사라지지 않고 유지되는 데이터의 특성
    ex) 하드디스크, SSD - 영속성 O / RAM : 영속성 X

인터페이스 (Interface)

  • 상하관계가 존재하는 약속 관계
    ex) API

프로토콜 (Protocol)

  • 서로 동등한 관계에 있는 약속 관계
    ex) WWW

API (Application Proramming Interface)

  • 프로그램을 만들기 위해 필요한 인터페이스

JPA (Java Persistence Application Programming Interface)

  • 자바 프로그램을 만들 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스

JPA는 ORM 기술이다.

ORM (Object Relational Mapping)

  • 객체를 데이터베이스에 연결하는 하나의 방법론 중 하나
  • 보통은 DB에서 테이블을 만든 후 Java에서 연결하지만, ORM은 반대
  • Java에서 클래스를 만들어 실행하면 데이터베이스에 테이블을 자동으로 만들어지게 하는 방법.

모델링

  • 추상적으로 되어있는 것을 현실세계로 만들어 내는 것

JPA는 반복적인 CRUD 작업을 생략하게 해 준다.

기존에 Java에서 DB에 연결하여 데이터를 주고 받을 때에는

1. 자바에서 DB로 연결 시도
2. DB에서 세션 오픈, 자바가 Connection 가짐.
3. DB로 쿼리 전송
4. DB에서 처리 후, 자바로 다시 보냄
5. 자바에서는 DB로부터 받은 데이터를 바로 읽을 수 없기 때문에 자바 Object로 변환
6. Connection, 세션 닫음

이러한 순서로 되어 있었다. 엄청나게 많이 사용되기 때문에, 이 작업이 많이 이루어지는데, JPA에서는 ORM이 이러한 일련의 과정이 필요 없이 하나의 메소드로 모두 사용 가능하여 귀찮은 작업들을 많이 줄여준다.


JPA는 영속성 컨텍스트를 가지고 있다.

컨텍스트 (Context)

  • 대상에 대한 모든 정보를 다 모아놓은 것.
  • 예를 들어 A의 컨텍스트라고 하면, A에 대한 모든 정보를 다 모아놓은 것이라고 생각하면 된다.

영속성 컨텍스트

  • Java와 DB는 모든 처리를 영속성 컨텍스트를 통해 이루어지며, 영속성 컨텍스트는 둘 사이에 있는 모든 메타데이터들을 가지고 있다.
  • 예를 들어 자바에서 과일 데이터를 DB에 저장하려면 과일 데이터를 영속성 컨텍스트로 보내고, 영속성 컨텍스트는 DB에 과일 데이터가 없는 것을 확인 후, 과일 데이터를 Insert 한다. 하지만 과일 데이터가 사과 -> 딸기로 변했다고 하면, 딸기는 영속성 컨텍스트로 보내지고, 영속성 컨텍스트는 딸기를 DB에 Insert 하는것이 아닌 Update를 한다.

JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체 저장 불가능)

Java는 클래스에 객체를 넣을 수 있지만 DB는 객체를 저장할 수 없다. 따라서 클래스 내부에 객체가 있는 경우에 DB로 그대로 insert를 하면 오류가 나지만, JPA를 사용하면 JPA가 자동으로 객체를 여러개 생성하여 Foreign Key를 사용하여 맵핑을 시켜준다.


JPA는 OOP의 관점에서 모델링을 할 수 있게 해 준다. (상속, 콤포지션, 연관관계)

Java에서 상속을 한 경우에는 DB에서 해당 테이블에 컬럼을 추가하여 데이터를 연결.
콤포지션을 한 경우(클래스 내부에 객체가 있는 경우)는 각각의 테이블을 만든 후, Foreign Key를 통해 테이블을 연결한다.

콤포지션(Composition)

  • 상속과 다르게 클래스를 결합하는 것. 기존의 클래스가 새로운 클래스에 포함됨.

방언 처리가 용이하여 Migration 하기 좋고, 유지보수도 좋다.

방언(dialect) 처리가 용이하다는 뜻은 연결할 수 있는 DB의 종류가 다양하다는 뜻이다. JPA에는 추상화 객체가 있는데, 이 추상화 객체를 통해서 여러 DBMS에 연결 할 수 있기 때문에 Migration도 쉽고 유지보수 하기도 좋다.


JPA는 쉽지만 어렵다.

 




출처 : youtu.be/ajZIPOv31yE

profile
컴퓨터 관련 여러 분야 공부중

0개의 댓글