JPA ( Java Persistenc API ) 는 ORM ( Object Relational Mapping ) 표준 기술이다.
객체 ( Object ) 관계형 ( Relational ) 매핑하는데 도움을 주는 기술이다.
객체는 자바기반 스프링 ( 도구 ) 에서 클래스로부터 생성된 인스턴스를 의미하고,
RDBMS ( 관계형 데이터베이스 관리 시스템 ) 에 객체를 기반으로 테이블 ( Relational ) 만들어지고,
자바 클래스와 데이터베이스 테이블 간의 매핑 정보를 사용하여 SQL Query 없이 데이터를 조작할 수 있도록
하는 기술이 JPA라는 것, JPA는 API중 하나이자 ORM에 해당한다.
MyBatis도 ORM 이지만 JPA는 MyBatis 보다 더 객체지향적이다.
JPA와 스프링 JPA는 다르다.
스프링 JPA는 스프링 환경에서 좀 더 쉽게 JPA를 사용할 수 있도록 도와주는 라이브러리다.
Spring Boot 에서 JPA 설정하기
application.properties 파일과 application.yml ( yml → 야믈 이라 읽는다, YAML Ain't Markup Language ) 파일은 스프링 부트 프로젝트에서 사용하는 설정 파일이다. 이 설정 파일에는 데이터베이스 연결 정보나 로그 파일 경로, 서버 포트, 보안 관련 설정 등 다양한 설정을 이 설정 파일에서 지정할 수 있다. .properties 파일과 .yml 파일은 기능은 동일하나 파일 내에 기술해야하는 형식이 다르다.
yml 파일
yml 파일은 계층적 구조를 쉽게 파악할 수 있어 복잡한 구성 설정에 유리하다.
들여쓰기를 사용해 계층적 구조를 표현하고, 설정 값은 key: value 형식으로 표현한다.
properties 파일에 spring.application.name=jpa 라고 작성했다면
yml 파일에서는 다음과 같이 작성한다. yml 파일에서는 들여쓰기가 중요하다.
# Shift+F6 --> 파일명 재설정할 때
#server port change
server:
port: 8181
spring:
application:
name: jpa
datasource:
url: jdbc:mysql://localhost:3306/jpa?serverTimezone=Asia/Seoul
username: mysql 계정명 적기
password: mysql 비밀번호 적기
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
#show-sql: true --> 자동으로 생성된 쿼리를 보여주는 옵션
#방언 설정 --> 각 DB에 맞는 쿼리를 설정, 데이터베이스 프로그램마다 사용하는 쿼리가 조금씩 다르다.
#어떤 데이터베이스 프로그램을 사용할지를 database-platform 에 작성해주기
database-platform: org.hibernate.dialect.MySQLDialect
hibernate:
ddl-auto: update # 자동 DDL 설정 옵션 --> create로 설정하면 클래스 모양대로 테이블 자동 생성
database: mysql # DB 계열 설정
spring 이라는 가장 최상위의 설정이 있고,
spring에서 application 과 datasource 그리고 jpa 가 갈라지고,
application 에서 name 이 datasource 에서 url, user, password, driver-class-name 이 갈라지고...
이렇게 계층적인 구조로 설정되어 있음을 알 수 있다.
MyBatis 를 사용했을 때는 테이블을 만들고, 그 테이블을 보면서 클래스를 디자인 했는데,
스프링 JPA의 경우, 클래스를 먼저 작성할 건데 작성하는 클래스는 테이블이 어떻게 생길지를 생각하며 작성해야 한다.
그리고 서버를 작동하면 작성한 클래스에 기반해서 테이블을 생성해준다 → ddl-auto: create
주의할 점은 ddl-auto: create 로 작성해 놓고 서버를 계속 작동하면
작동할 때마다 테이블을 drop ( 삭제 ) 하고 다시 생성하기를 반복한다.
그래서 한 번 테이블이 생성된 뒤에는 ddl-auto: update 로 변경해주어야 한다.
'공부기록용' 카테고리의 다른 글
[ SQLD ] SQL_Basic DML 240810 (0) | 2024.08.10 |
---|---|
[ SQLD ] 데이터 모델과 성능 240806 (0) | 2024.08.06 |
[ SQLD ] 실습 240802 (0) | 2024.08.02 |
[ MYSQL ] SELECT절과 WHERE절 실습 (0) | 2024.08.01 |
[ SQLD ] 데이터 모델과 성능 240801 (0) | 2024.08.01 |