본문 바로가기
SpringBoot/JPA

(1) Java Persistence API, JPA란?

by D.O.T 2023. 12. 31.

JPA를 직역하면 '자바 영속성 응용프로그램 프로그래밍 인터페이스'가 됩니다.

하나씩 뜯어 보겠습니다.

 

1. 자바에서 사용하니까 자바

2. 영속성(?)

3. 실질적으로 사용자가 사용하는 프로그램을 응용프로그램이라고 하죠.

4. 프로그래밍은 프로그램을 만들기 위한 행동(작업)

5. 인터페이스는 두 매체(시스템) 사이의 상호적인 활동을 말하죠.

 

즉, 자바에서 응용프로그램을 개발 할 때, 영속성을 띤 API를 의미합니다.

'영속성'의 사전적 의미는 '오래 계속되는 성질'입니다. 

 

저는 영속성을 컴퓨터의 입장에서 해석 했습니다.

- 오래 계속되는 성질 -> 사라지지 않는다 -> 비휘발성 -> 저장


예시를 들어보겠습니다.

영속성이 없는 경우

먼저, 응용프로그램이 실행되는 구조를 알아야합니다.

만약, 프로그램에 A = 10 이라는 값을 저장한 경우, 이후에 A를 가져오려면 ?

프로그램은 RAM에 적재 되면서 하나의 주소에 10이라는 값을 저장하게 되죠.

A는 10이 저장된 주소를 가르키고요.

RAM에서 실행되므로 프로그램을 종료하고 다시 실행하게 된다면 A는 날아가버립니다.

RAM은 휘발성이기 때문에 프로그램이 실행되는 동안에만 정보를 저장합니다.

이렇게, 한 번 저장한 A를 다시 찾아오고 싶을 때, 찾을 수 없는 상황을 영속성이 없다고 해석했습니다.

 

영속성이 있는 경우 (1)
영속성이 있는 경우 (2)

영속성이 있는 경우 (1)

프로그램에서 A가 가르키는 주소에 10을 저장하고, 이 주소에 저장된 값을 저장 장치에 저장합니다.

영속성이 있는 경우 (2)

프로그램을 종료하고 다시 실행해서 A를 유지하고 싶습니다.

저장 장치에 저장된 A를 가져옵니다.

 

위 과정을 거치는 경우 사용자 입장에서는 데이터가 사라지지 않는 것처럼 보입니다.

실제 프로그램 입장에서는 사라졌지만, 다시 가져오는 것이고요.

 

이런 경우, 영속성이 있다고 해석했습니다.


그럼, 우리는 영속성이 왜 필요한지 의심해볼만하죠.

우리가 지금 사용하는 블로그를 생각해봅시다.

 

블로그를 접속하게 되면 누군가가 작성한 글 또는 내가 작성한 글의 목록, 글의 내용 등이 보이죠?

우리의 컴퓨터에 세상 모든 블로그의 정보들이 다 저장되어 있어서 한 번에 확인이 가능할까요?

 

접속하는 당시에는 아무 정보가 없지만 영속성을 이용해서 각 블로그 서버에 저장 된 글을 불러오는 것 입니다.

영속성이 사용된 대표적인 예시가 될 수 있습니다.

 

저는 영속성이 개념이 없을 때는 '서버의 데이터베이스에 저장된 정보를 불러온다.'가 전부였습니다.

컴퓨터를 공부하는 사람의 입장, 사용자의 입장을 고려했을 때 영속성을 알고 모르고의 차이가 굉장히 크게 느껴지네요.

 

어쨌든, 정리하자면 JPA는 데이터를 보존할 수 있도록 하는 JAVA API입니다.

더 자세한 내용이 있겠지만 일단 JPA에 대한 틀은 이 정도가 적당할 것 같습니다.. (작성자 기준)