스프링 JPA

박찬섭·2024년 3월 3일

스프링

목록 보기
3/14

ORM
JPA
Entity
Persistence (영속성)
Transcation

ORM

Object-Relational-Mapping
기본적으로 DB데이터를 자바에서 반대로 자바의 객체를 DB안에서 읽을 수 없다.
(자바는 객체지향형, DB는 관계지향형 언어)
개발자들이 DB에 접근을 할 때 쿼리를 작성하지 않고 자바의 객체와 DB의 관계를 매핑 시켜주는 개념이다.

ORM 이라는 방식 이전에는 JDBC(Java Database Connectivity)라는 자바의 API를 사용하여 DB에 접근 했었다.
JDBC는 기본적으로 DB와 드라이버로 연결 이후
1. 쿼리 실행
2. 결과 처리
3. 연결 닫기
와 같이 작동하는데 이는 개발자들이 직접 쿼리문을 작성하고 결과 및 연결에 대해서 수동적으로 작업을 진행 했어야 했다.

이는 개발자들이 자바에서의 작업보다 DB와의 연결, 쿼리문 작성에 무게중심이 쏠릴 수 있는 형태를 만들었고,
이를 해결하기 위해 자동으로 자바와 DB사이를 매핑해주는 ORM이 등장한 것 이다.


JPA

Java Persistence API
JPA는 ORM개념을 사용한 자바 API이다.
이 JPA구조를 따르고 가장 많은 사용되는 구현체가 Hibernate이다.


Entity

EntityDB 의 테이블과 매핑이 되는 자바의 객체 이다.
EntityJPAEntityManager 에 의해서 관리된다.


Persistence (영속성)

리액트의 리덕스와 유사한 느낌을 받은 개념이다.

Persistence 는 JPA에서 객체를 데이터베이스에 저장하고 관리하는 기능 이라고 하지만
영속성이라는 뜻에 맞게 데이터베이스를 통해 데이터의 영속성을 부여하는 작업이라고 할 수 있다.

Entity Manager 는 JPA(Hibernate)에 의해 생성된다.
자바 객체에 담긴 정보를 영속성화 시키기 위해서는 데이터베이스에 매핑되는 Entity 가 필요하고
Entity 를 데이터베이스에 저장, 수정, 삭제 등을 관리하기 위해 Persistence Context 를 생성하여 관리한다.
이때 관리되는 내용(저장, 수정, 삭제)등이 바로 일어나는 것이 아니라 모든 쿼리문에 대해서 문제가 없을때 즉 commit이 일어났을때 실제로 DB에서 처리한다.
이 일련의 과정 중 문제가 생기거나 할 경우 롤백을 통해 실제 DB를 건드리지 않을 수 있다.
실제로 데이터베이스에서 처리가 일어나기 전 까지의 과정을 트랜잭션 이라고 부른다.

Transcation

위에서 언급한 것 처럼
이 트랜잭션은 EntityManager에 의해서 관리되고 생명주기 또한 같다.
데이터의 일관성과 무결성을 추구하고 이로인해 안정성을 높일 수 있다.

profile
백엔드 개발자를 희망하는

0개의 댓글