JPA와 ORM
ORM란?
- Object Relational Mapping
- SQL이 아닌 개발언어로 DB에 접근을 하게 해주는 툴!
- 객체와 테이블을 매핑하는 기술
JPA란?
- 자바 ORM기술에 대한 API표준 명세
- ORM을 사용하기 위한 인터페이스 모음
- Hibernate를 이용해서 구현
- DB를 보다 쉽게 사용 가능!
H2 DB
JPA를 사용하기 위해서는 우선 DB가 필요하다.
H2 DB?
- JAVA로 작성된 오픈소스 RDBMS
- 용량이 매우 가벼움
- 웹에서 콘솔을 제공함!
- 로컬환경, 테스트에 용이
Dependencies 추가하기
dependencies {
runtimeOnly 'com.h2database:h2'
}
- runtimeOnly: 빌드에서 라이브러리를 추가하지 않고, 실행 시 라이브러리를 추가한다는 의미!
설정하기
# DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
- spring.h2.console.enabled: h2 콘솔 접속을 허용할지
- spring.h2.console.path: 콘솔 접속 URL 설정
- spring.datasource.url: DB에 접속하기 위한 경로
- spring.datasource.driverClassName: DB에 접속할 때 사용하는 드라이버 클래스명
- spring.datasource.username: DB의 사용자명(기본값이 sa)
- spring.datasource.password: DB의 비밀번호
db 파일 생성하기
- jdbc:h2:~/local이기 때문에 홈 디렉터리에 local.mv.db를 생성하자
- 다음 명령어로 생성할 수 있다.
- 권한에 조심하자!
touch local.mv.db
- 뒤에서 Entity를 구성하고 실행하면 파일을 알아서 생성한다.
h2-console 접속하기
JPA 추가하기
Dependencies 추가하기
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
설정하기
# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
- spring.jpa.properties.hibernate.dialect: DB에 따라 달라지, H2 DB 사용을 위한 설정
spring.jpa.hibernate.ddl-auto
- none: 엔티티가 변경되어도 DB를 변경하지 않음
- update: 엔티티의 변경된 부분만 DB에 적용
- validate: 차이점이 있는지 검사만 함!
- create: 서버 시작시 모든 테이블 삭제 후 재생성
- create-drop: create와 동일, 서버 종료시 테이블 모두 삭제함!