Step-by-Step
[Java Spring] JPA에 대한 이해 본문
JPA (Java Persistence API; 자바 영속성 API)
- 자바 플랫폼 SE와 자바 플랫폼 EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 표현하는 자바 API
- 일반적으로 데이터를 저장할때 RAM(휘발성) → 하드디스크(비휘발성)로 옮김
- JAVA에 있는 데이터를 하드디스크의 DB로 옮겨 영구 저장을 할 수 있도록 해주는 API
※ 영속성(Persistence) : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성
+ 영속성은 파일시스템, 관계형 데이터베이스, 객체 데이터베이스 등을 활용하여 구현
JPA 특징
1. ORM(Object Relational Mapping) 기술
- 객체와 관계형 데이터베이스의 데이터를 자동으로 Mapping(연결)해주는 것
- 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 OOP의 클래스와 RDB의 테이블의 모델간 불일치를 해소하는 역할
ex) 데이터 타입이 class인 경우 ORM이 mapping해서 DB에 넣어줌 (+ 포인터 넣어줌)
2. 반복적인 CRUD 작업 생략
- JAVA와 DB간 통신에서 세션 오픈, Connection 후 쿼리 전송, json에서 Object로 변환 등의 일련의 작업을 JPA의 함수로 해결
3. 영속성 컨텍스트
- 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경
※ context(컨텍스트) : 대상에 대한 모든 것
- Java와 DB의 중간에서 엔티티 매니저를 통해 엔티티를 조회하거나 저장할 때 보관하고 관리해주는 역할
4. OOP 관점에서 모델링
- JAVA에서 저장해야할 데이터 타입이 Class인 경우 해당 객체 Class에 대한 테이블에도 모델링 해줌
엔티티 생명주기
비영속 | 영속성 컨텍스트와 관계가 없는 새로운 상태 ex) 엔티티 생성 |
영속 | 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태 ex) 엔티티 매니저를 통해 영속성 컨텍스트에 엔티티 저장 |
준영속 | 영속성 컨텍스트에서 관리되다가 분리된 상태 |
삭제 | 영속성 컨텍스트에서 삭제된 상태 |
[참조]
https://gmlwjd9405.github.io/2019/02/01/orm.html
'언어 > Java Spring' 카테고리의 다른 글
[Spring] Spring Security (0) | 2022.05.02 |
---|---|
[Spring] Gradle vs Maven (0) | 2022.03.28 |