JPA

devyunie·2024년 8월 26일

SpringBoot

목록 보기
10/13
post-thumbnail

JPA?

JAVA Persistence API로 관계형 데이터베이스의 데이터에 접근하고 조작할수 있는 기능 제공

  • JAVA에서 ORM을 구현하는 표준 인터페이스
  • Hibernate와 같은 구현체 사용 가능
  • Spring Data JPA는 개발자가 데이터 액세스 계층을 손쉽게 구현할 수 있도록 지원

주요 기능 및 특징

성능 저하

  • ORM은 추상화 계층을 추가하므로, SQL 쿼리보다 더 많은 오버헤드가 발생할 수 있다. 이로 인해 성능이 저하될 수 있다.
  • 복잡한 쿼리 제한
  • ORM은 일반적인 CRUD 작업에 최적화되어 있지만, 복잡한 쿼리나 데이터베이스 특화 기능에 대한 지원이 제한적이다.

학습 곡선

  • 개발자는 ORM 도구의 사용 방법과 동작 원리를 익혀야 한다. 이로 인해 학습에 많은 시간을 투자해야 한다.

결합도 증가

  • ORM을 사용하면 데이터 모델과 데이터베이스 구조 간의 결합도가 증가한다. 이는 데이터베이스 구조 변경과 같은 작업에 제약이 따를 수 있다.

Hibernate

  • Java 객체와 관계형 데이터베이스 간의 매핑을 처리하는 JPA 구현체

Persistence (지속성)

  • 데이터를 영구적으로 저장하고, 애플리케이션의 실행이 종료된 후에도 사용 가능한 상태로 유지

의존선 주입

JPA gradle 의존성 주입

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

JPA를 사용하기 위해 의존성을 주입

MySQL Connector gridle 의존성 주입

runtimeOnly 'com.mysql:mysql-connector-j'

JPA가 접근할 데이터가 MySQL이라는것을 명시 (의존성 주입)

Application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://호스트:포트/데이터베이스?serverTimezone=UTC&characterEncoding=UTF-8 
spring.datasource.username=아이디
spring.datasource.password=비밀번호

serverTimezone=UTC&characterEncoding=UTF-8

  • 서버타입을 동기화 및 문자인코딩 타입 정의

0개의 댓글