[ STUDY ]/Spring Boot

JPA - ORM, 영속성 컨텍스트

김강니 2024. 12. 7. 21:02

JPA(Java Persistemce API)

자바에 있는 데이터를 영구적으로 기록할 수 있는 환경을 제공하는 API즉, 프로그램이 종료되어도 데이터가 영구적으로 기록되어있다.

  • 자바 객체와 관계형 데이터 베이스를 매핑(ORM)하는 기술이다.
  • 데이터베이스에 직접 접근 ❌  객체 중심으로 데이터베이스 작업을 처리한다.
  • 객체 중심 설계를 통해서 데이터베이스와 비즈니스 로직의 분리가 가능하다.
  • 기본적인 CRUD작업이 편리하다.

 

ORM(Object Relational Mapping)

객체지향 프로그래밍 언어의 객체 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술이다.

  • 객체를 데이터베이스에 저장하거나, 조회, 변경하는 역할을 담당한다.
  • 장점
    1. 생산성 - SQL대신 메서드 호출로 데이터베이스 작업을 수행하며, CRUD 작업을 자동화하여 개발 속도가 증가한다.
    2. 가독성 - 비즈니스 로직과 데이터베이스 로직이 분리된다.
    3. 유지보수성 - 데이터베이스 구조가 변경되더라도, 객체 설계만 수정하면 비즈니스 로직에 큰 영향을 미치지 않는다.
    4. 데이터베이스 독립성 - SQL에 의존하지 않으므로, 다른 데이터베이스로 전환 가능
    5. 재사용성 - 객체 중심으로 설계하므로, 동일한 객체를 다양한 데이터베이스 작업에서 재사용 가능
  • 단점
    1. 성능 이슈 - 복잡한 쿼리나 대량 데이터 작업에서 성능 저하
    2. 데이터베이스와의 밀접한 제어 부족
      ORM이 SQL을 자동으로 생성하므로, 세부적인 SQL 최적화가 어렵거나 제한적이다.

 

 

영속성 컨텍스트

엔티티를 영구 저장하는 환경이다. 애플리케이션과 데이터베이스 사이에 객체를 보관하는 가상의 데이터 베이스 역할

  • 어떤 데이터를 select로 요청할 때 먼저 영속성 컨텍스트에 데이터를 요청하게 된다. 이때 영속성 컨텍스트에 데이터가 있다면 데이터를 영속성 컨텍스트로부터 받고, 없다면 영속성 컨텍스트가 DB에 데이터를 요청해서 받아서 java object 타입으로 바꿔서 데이터를 준다.