한 달 동안 '코드로 배우는 스프링 부트 웹 프로젝트'라는 책을 통해 스터디📚를 하기로 했다. 개인적인 용도로 나중에 다시 찾아보기 쉽게 정리해두려고 한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//JUnit4 추가
testImplementation("org.junit.vintage:junit-vintage-engine") {
exclude group: "org.hamcrest", module: "hamcrest-core"}
}
프로젝트를 실행하면 로그에 HikariPool...로 시작하는 부분을 볼 수 있는데 스프링 부트가 기본적으로 이용하는 커넥션 풀이 HiKariCP 라이브러리를 이용하기 때문이다. 스프링 부트가 모든 것을 자동으로 설정해준다.
커넥션 풀에 대한 개념 및 사용하는 이유 등에 대해서는 블로그 참고
객체지향 패러다임을 관계형 데이터베이스에 보존하는 기술
개체와 클래스를 통해 객체지향과 관계형 데이터베이스는 유사한 특징을 가지는 것을 알 수 있다. 이런 특징에 기초하여 객체지향을 자동으로 관계형 데이터베이스에 맞게 처리해주는 기법에 대해 고민한 결과 탄생한 것이 ORM이다.
ORM을 Java 언어에 맞게 사용하는 '스펙'이다.
이 스펙을 구현한 대표적인 구현체가 Hibernate 프레임워크이다. 스프링 부트는 이 구현체를 이용한다.
구성: Spring Date JPA -> Hibernate -> JDBC -> DB
Spring Data JPA 개발에 필요한 것은 아래 두가지이다.
1. JPA를 통해 관리되는 객체(엔티티 객체)를 위한 엔티티 클래스
2. 엔티티 객체들을 처리하는 기능을 가진 Repository 인터페이스
- Repository 인터페이스를 상속 받으면 기본적인 CRUD, 페이징/정렬 기능을 별도 코드없이 처리할 수 있다.
spring:
datasource:
url: jdbc:mariadb://localhost:13306/bootex
username: bootuser
password: bootuser
driver-class-name: org.mariadb.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
show_sql: true
logging.level:
org.hibernate.SQL: debug
쿼리메서드
메서드의 이름 자체가 쿼리의 구문으로 처리되는 기능
@Query
SQL과 유사하게 엔티티 클래스의 정보를 이용해서 쿼리를 작성하는 기능