코딩두의 포트폴리오

JPA 개념잡기 본문

Spring/Spring Boot

JPA 개념잡기

코딩두 2024. 6. 18. 16:58

JPA는 Java Persistance API이다.

JPA는 Java 프로그램에서 데이터를 영구적으로 저장할 때 사용하는 인터페이스

Persistance(영속성)은 Entity를 영구적으로 저장해주는 환경

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)

-> JAVA를 통해 프로그래밍을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스가 JPA

 

 

JPA는 ORM 기술이다.

Object Relational Mapping

객체 지향 프로그래밍 언어를 사용 -> 호환되지 않는 유형의 시스템 간에 데이터를 변환

SQL 쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있음

 

 

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

영속성: 데이터 -> 영구적으로 저장

컨텍스트(context): 대상에 대한 모든 정보를 가지고 있음

영속성 컨텍스트: 

영속성 컨텍스트는 자바와 DB 중간에 위치 / 자바가 DB에 Data를 저장해야 하는 모든 것을 알고 있음

자바가 DB에 저장해야 하는 모든 메타데이터 정보는 영속성 컨텍스트가 소지하고 있음

 

 

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

OOP: 객체지향 프로그래밍

테이블의 자료형 불일치를 해결해줌

 

 

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

[ 참고 URL ]

https://velog.io/@alsgudtkwjs/Spring-OOP%EC%99%80-DB

 

[Spring] OOP와 DB

📌포스팅에 앞서.. 필자가 배운 내용을 정리하고자 함에 의의를 뒀으니 비유적인 표현이 많고 개념을 정의함에 있어서 정석적인 정의가 아님을 인식해주었으면한다. 피드백 절대환영!!!

velog.io

 

 

 

방언 처리가 용이하여 Migration하기 좋고, 유지보수 또한 좋음.

다방면의 DB를 사용할 수 있다.

클라이언트가 오라클, mysql 등 본인이 원하는 데이터베이스를 사용할 수 있다.

ex) 더이상 오라클 사용이 불가할 때 mysql 사용 가능 -> 방언 처리 용이

사용 함수 변경 -> 스프링 코드도 변경 / But, 스프링이 추상화 객체에 의존하여 JPA 이용 시 -> DB 변경 가능

 

 

JPA는 난이도가 자주 달라짐