Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

그라가승훈

[유튜브-메타코딩] Spring Boot 개념정리 with JPA - JPA 개념잡기 본문

Spring

[유튜브-메타코딩] Spring Boot 개념정리 with JPA - JPA 개념잡기

그라가승훈 2022. 7. 26. 18:20
JPA란?

JPA에 대한 대표적인 개념 8개로 정리 해주셨다.

 

1. JPA는 Java Persistence API이다.

- API 개념

  • API(Application Programming Interface) : 말 그대로 인터페이스를 통해서 프로그래밍을 하고 프로그램을 만드는 것이다.

- 인터페이스와 프로토콜의 차이점

  • 인터페이스 : 프로그램을 개발한 개발자가 A데이터를 공유할때 사용할 방법을 제시 (상하관계가 존재하는 약속)
  • 프로토콜 : www을 사용할때 프로토콜을 사용하는데 사용하는 방법을 같이 정함. (동등한 관계의 약속)

- JAP 개념

  • persistence(영속성)란 : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성은 파일시스템, 관계형 데이터베이스 혹은 개체 데이터베이스등을 활용.
  • 간단하게 자바에 있는 데이터를 영구히 기록할수 있게 환경을 제공하는 API이다.
  • 결론 , JPA란 Java Persostence Application Programming Interface : 자바프로그램을 할때 영구적으로 데이터를 저장하기 위해서 필요한 인터페이스

2. JPA는 ORM 기술이다.

- ORM이란?

  • ORM(Object Relational Mapping) : Object를 데이터베이스에 연결하는 방법론.

 - 기존방법과 차이점

  • 기존에는 DB의 Table을 사용하여 자바에서 모델링을 했다.

  • JPA 인터페이스를 사용하면 자바에서 클래스로 DB 테이블을 자동생성 할 수 있다. 이 기법을 ORM 기법이라고 한다.


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

 - 기존 방법과 차이점.

기존방법은 단순 노동이 많았다.

  1. 자바에서 DB 사용 요청
  2. DB 세션 오픈 후 자바 Connection
  3. 자바에서 쿼리 전송 후  DB data 반환
  4. DB data 타입을 자바 Object 타입으로 변경

JPA를 사용하면 위 모든 내용을 함수 하나로 제공하므로 반복적인 노동을 줄여준다.


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

- 영속성 컨텍스트란?

  • 영속성 : 데이터 → 영구적으로 저장! (DB)
  • 컨텍스트(context) : 대상의 모든 정보.
  • 영속성 컨텍스트는 자바가 데이터베이스에 데이터를 저장해야하는 모든것들을 알고 자동으로 처리해주는 것이다.
  • 자바에서 데이터베이스, 데이터베이스에서 자바에 데이터를 전달할때 영속성 컨텍스트를 통해서 전달하면 작업들을 자동으로 전달한다.


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

  • DB에서는 Player 테이블을 조회할때 FK인 TeamId로 Team의 내용을 알려면 두번의 Select 혹은 조인을 사용해야 한다.

  • OOP로 사용을 한다면 Player 클래스에 Team 객체를 넣어서 사용하면 Team의 클래스에 내용을 알 수 있다. 여기서 DB는 TeamId 데이터 타입이 IntJava는 데이터 타입이 오브젝트불일치성이 생긴다.
  • 이것을 가능하게 해주는 기술이 ORM이다. JPA는 ORM기술.


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

- 상속과 콤포지션(결합)

  • Car와 Engine이라는 클래스가 있으면 Engine은 Car의 부모가 될 수 없다.
  • Car에서 Engine 객체를 사용하려면 콤포지션(결합)을 사용해야 한다.

- OOP관점에서 모델링

  • 콤포지션 : Engine을 콤포지션 한 Car를 JPA로 테이블 자동생성을 하면 아래와 같이 Car와 Engine 데이터베이스 테이블이 생성된다.
  • 상속 : EntityDate라는 클래스에 timestamp 로 시간데이터를 만들어 Car클래스에 extends 하고 테이블 자동생성을 하면 데이터베이스 테이블에도 상속받은 컬럼이 생성된다.


7. 방언 처리가 용이하여 Migration과 유지보수에 좋다.

  • JPA를 사용할때 추상화 객체를 생성하면 그 안에 오라클, MySQL 등 여러 DBMS를 넣어도 문법처리를 자동으로 바꿔준다.


8. JPA는 쉽지만 어렵다.

  • 위 내용을 보면 개발에 정말 많은 도움을 준다.
  • 그만큼 사용하려면 기초 지식을 쌓고 사용해야 활용도가 좋을 것이다. JPA를 사용하면서도 기초를 꼭 공부해야겠다.

 

Comments