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