Spring/Springboot-Intellij

[SpringBoot] JPA CORE - JPA란 무엇일까?

congs 2025. 1. 31. 20:46

애플리케이션에서 DB를 직접 다룰때의 문제점

  1. DB 테이블 생성
  2. SQL 작성
  3. JDBC를 이용하여 SQL 실행 ( jdbcTemplate.update(sql, "Robbie", "오늘 하루도 화이팅!");)
  4. SQL 결과를 객체로 직접 만들어줘야함

= SQL에 의존적이라 변경에 취약함 (SQL을 직접 수정하고 변환부분도 추가 작성필요)

 

이에,  ORM(Object-Relational Mapping)이 등장!

ORM (Object-Relational Mapping)

  • Object : "객체"지향 언어 (자바, 파이썬)
  • Relational : "관계형" 데이터베이스 (H2, MySQL)
  • 반복적이고 번거로운 애플리케이션 단에서의 SQL 작업을 줄여주기 위해 등장

 

JPA (Java Persistnece API) 

- 자바 ORM 기술에 대한 표준 명세

  • JPA는 애플리케이션과 JDBC 사이에서 동작되고 있습니다.
  • JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해줍니다.
  • 또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리할 수 있습니다.
    • 하이버네이트(Hibernate)란?
      • JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 중 사실상 표준하이버네이트입니다.
      • 스프링 부트에서는 기본적으로 ‘하이버네이트’ 구현체를 사용 중입니다.
      - 사실상 표준 (de facto, 디팩토) 보통 기업간 치열한 경쟁을 통해 시장에서 결정되는 비 공식적 표준