JPA

2024. 5. 20. 21:12TIL

✔오늘 배운 중요한 🔑 point

  • 백엔드에서 API를 설계하여 데이터들을 DATABASE에 저장할때 따로 SQL쿼리문,  SELECT나 INSERT등의 명령어를 사용하지 않았는데, 이러한 SQL쿼리를 작성하지 않아도 데이터베이스를 다룰 수 있게 해주는 것이 바로 ORM이고 그 ORM의 한 종류가 JPA이다 !!!!
  • 간단한 CRUD의 경우 ORM을 사용하면 매우 편리하지만  WHERE절이나 서브쿼리 등등 복잡한 기능을 사용하는 경우에는 직접 SQL을 작성하는 것이 더 효율적이다 
  • JDBC는 SQL쿼리를 이용해서 데이터베이스와 통신을 하는 매우 낮은 수준의 API이기때문에 JPA와 Hibernate를 사용하는 것이며, JPA는 SQL쿼리를 직접적으로 사용하지 않고 데이터베이스 작업을 처리할 수 있게 하는 API이고, Hibernate는 그 JPA를 실질적으로 구현을 하는 역할이다

🎯 오늘 배운 내용

 

JPA

JPA는 ORM의 한종류로서 데이터베이스를 쉽게 조회할 수 있도록 한다

 

 

JDBC,Hibernate,JPA,Spring Data JPA의 차이

 

JDBC: (Java Database Connectivity): SQL을 작성하며 직접적으로 DB와 통신

spring:
  datasource:
    url: jdbc:postgresql://aws-0-ap-northeast-2.pooler.supabase.com:5432/postgres

application.yml에 작성한것을 보면  jdbc가 사용된것을 볼수 있는데 JDBC는 API와 그 API를 구현하는 Driver로 이루어져있다. 

dependencies {
    runtimeOnly("org.postgresql:postgresql") // postgresql드라이버 설치
}

build.gradle.kts에서 확인 할 수 있는 바로 이 부분이 데이터베이스에 대해 독립적이기 때문에 데이터베이스 자체를 변경하더라도 코드의 수정이 최소화 될수 있는것이다!! postgreSQL을 연결하고 싶으면 postgreSQL 드라이버를 설치하면 되고, MySQL을 사용하고 싶으면 MySQL 드라이버를 설치해서 사용하면 된다

 

자 그렇다면 JDBC만 사용하면 끝일까?

물론 JDBC만 사용해서도 개발이 가능하다! 하지만 JDBC는 너무 낮은 수준의 API이기 때문에

우리는 JPA(Java Persistence API)나 Hibernate를 그 위에 추가해서 사용한다

JPA는 데이터베이스 관련 코드를 객체지향적으로 작성할수 있도록 도와주는 API이고

실제 구현은 Hibernate가 담당한다!!!

그리고 그 JPA를 쓰기 편하게 만든것이 바로~ Spring Data JPA이다 

 

 

 

 

🤔 어떻게 활용할까?

즉 우리가 JPA를 배우고 사용하는 이유는 JDBC를 이용해서 데이터베이스와 직접적으로 통신을 하게 되면 SQL쿼리를 직접 작성해줘야하는 번거로움이 있기도 하고 객체지향적으로 설계를 하기 위해서 JPA를 사용하게 되는것이다.

📓 오늘의 한줄

"Success is not something that happens to you, it's something that happens because of you and because of the actions you take."

- Grant Cardone -