섹션 3 - JPA를 활용해 데이터베이스 연결하기
ORM에 대하여
- 데이터베이스의 스키마를 어플리케이션의 엔티티로 연결하여 사용 할 수 있도록 함
- 어플리케이션에서 데이터베이스에 요청할 쿼리를 직접 작성하지 않고 논리적인 비즈니스로직만으로 쿼리를 ORM이 작성해주기 때문에 가독성과 생산성이 증가한다.
자바, 코틀린 클래스 (객체 지향형 프로그램)
JPA를 사용해보기 앞서서 JPA를 사용하기 위해 자바, 코틀린의 클래스의 구조에 대해 짚고 넘어갑시다.
클래스
객체를 정의하는 틀, 설계도면을 클래스라 한다.
구성요소
class 클래스명(
val property1: String, // 생성자 매개변수와 프로퍼티를 한꺼번에 선언하기
constructor_param1, // 생성자 매개변수
) {
var property2: String? = null // 프로퍼티
fun method1() { // 메서드
// do somthing
}
constructor(): this("") // 생성자, 코틀린에서는 secondary constructor 라 부름
}
예시
class Student(
val name: String,
val gender: String,
val age: Int,
mobile: String
) {
var mobileNumber: String = mobile
var intelligence: Int = 0
fun walk() {
println("성큼 성큼")
}
fun study(hour: Int) {
intelligence += hour
println("지능 포인트: $intelligence")
}
fun laugh() {
if (gender == "MALE") {
println("하하")
} else {
println("호호")
}
}
fun run(meters: Int) {
println("호${"다".repeat(meters)}닥")
}
}
JPA 의존성 추가
build.gradle.kts 파일에 아래 추가
plugins {
// ...
kotlin("plugin.jpa") version "1.9.22"
// ...
}
dependencies {
// ...
implementation("org.springframework.boot:spring-boot-starter-data-jpa") // JPA
runtimeOnly("org.mariadb.jdbc:mariadb-java-client") // Database 연결
// ...
}
- JPA는 인터페이스로 실제 구현체는 기본적으로
hibernate-orm을 사용한다.
Entity 정의하기
spring.jpa.hibernate.ddl-auto: validate
spring.jpa.open-in-view: false
spring.jpa.show-sql: true
spring.jpa.hibernate.naming.implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.datasource.url: jdbc:mariadb://tmdwo07278.cafe24.com:3306/tmdwo07278
spring.datasource.username: tmdwo07278
spring.datasource.password:
@Entity // 파라미터 무엇이 있는지 봐보자
class Student () {}
Repository 정의해 의존성 주입하기
interface StudentRepository: JPA<Student, Long> {}
class StudentService(
private val studentRepository: StudentRepository // DI
) {}
JPA Query 작성해보기
https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html#jpa.query-methods.query-creation
메서드 네이밍으로 쿼리를 작성해보자
섹션 3 - JPA를 활용해 데이터베이스 연결하기
ORM에 대하여
자바, 코틀린 클래스 (객체 지향형 프로그램)
JPA를 사용해보기 앞서서 JPA를 사용하기 위해 자바, 코틀린의 클래스의 구조에 대해 짚고 넘어갑시다.
클래스
객체를 정의하는 틀, 설계도면을
클래스라 한다.구성요소
예시
JPA 의존성 추가
build.gradle.kts파일에 아래 추가plugins { // ... kotlin("plugin.jpa") version "1.9.22" // ... } dependencies { // ... implementation("org.springframework.boot:spring-boot-starter-data-jpa") // JPA runtimeOnly("org.mariadb.jdbc:mariadb-java-client") // Database 연결 // ... }hibernate-orm을 사용한다.Entity 정의하기
application.ymlRepository 정의해 의존성 주입하기
JPA Query 작성해보기
https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html#jpa.query-methods.query-creation
메서드 네이밍으로 쿼리를 작성해보자