1. 이전 포스팅

 

https://growingsaja.tistory.com/967

 

[Kotlin][SpringBoot3] Kopring 서버 실습 05 - MongoDB 연동하기 (MongoDB 7 사용)

1. 이전 포스팅 https://growingsaja.tistory.com/964 2. mongodb 설치 필자의 경우 mac에서 진행하고 있으므로 아래 글을 참조해 진행했습니다. https://growingsaja.tistory.com/966 3. 의존성 dependencyies 설정 추가 mongodb

growingsaja.tistory.com

 

 

 

 

 

2. 목표

 

 

 < 목표1 >

 

 Repository interface에서 CrudRepository를 상속하는 기존 형태가 아니라 JpaRepository를 상속하는 형태를 권장하므로 본 포스팅에서는 권장사항을 적용해 소스코드를 수정합니다.

 

 [ 권장 사유 ]

 a. 더 많은 기능 제공합니다.

    - JpaRepository는 CrudRepository를 확장하므로 CRUD 작업뿐만 아니라 페이징, 정렬, 동적 쿼리 생성 및 기타 JPA 관련 기능을 사용할 수 있습니다.

  b. Spring Data JPA 특화 메서드입니다.

    - JpaRepository는 Spring Data JPA에서 지원하는 특화된 메서드를 사용할 수 있도록 해줍니다. 이러한 메서드를 사용하면 복잡한 쿼리를 직접 작성하지 않고도 데이터베이스 조작이 가능합니다.

 

 

 < 목표2 >

 

 H2, MongoDB 이렇게 2개 db를 본 프로젝트에서 사용하는 api 서버 1개에서 모두 연동해 접근할 수 있도록 설정하기 위해, 소스코드를 수정합니다.

import org.springframework.data.mongodb.repository.MongoRepository

 

 

 

 

 

3. H2 database 사용하는 Coffee 레포지토리 수정

 

// vim CoffeeRepository.kt

package com.example.practicekopring.repositories

import com.example.practicekopring.entities.Coffee
import org.springframework.data.jpa.repository.Query
// Spring Data JPA에서 사용하는 쿼리 어노테이션을 가져옵니다.
import org.springframework.data.jpa.repository.JpaRepository
// Spring Data Repository의 기본 기능을 제공하는 CrudRepository를 가져옵니다.

// CrudRepository에서는 findAll(), findById(), save(), deleteById() 등의 크루드(기본 CRUD) 작업을 자동으로 지원하므로 이를 활용할 수 있습니다.
interface CoffeeRepository : JpaRepository<Coffee, Int> {
    // CoffeeRepository 인터페이스를 정의하며, Coffee 엔터티를 조작할 수 있는 메서드를 정의합니다.

    @Query("SELECT MAX(c.id) FROM Coffee c")
    // @Query 어노테이션은 사용자 정의 JPQL(Jakarta Persistence Query Language) 쿼리를 정의합니다.
    fun findMaxId(): Int?
    // "findMaxId" 메서드는 Coffee 엔터티의 최대 ID 값을 찾는 쿼리를 실행하고, 결과를 Int로 반환합니다. 결과가 없을 경우 nullable한 Int를 반환합니다.
}

 

 

 

 

 

4. MongoDB 사용하는 User 레포지토리 수정

 

// vim repositories/UserRepository.kt

package com.example.practicekopring.repositories

import com.example.practicekopring.entities.User
import org.springframework.data.mongodb.repository.MongoRepository

// UserRepository 인터페이스는 User 엔터티와 관련된 데이터베이스 작업을 위한 Repository입니다.
interface UserRepository : MongoRepository<User, String> {
    fun findByUsername(username: String): User?
}

 

 

 

 

 

5. Coffee 정상 작동 확인

 

User도 모두 정상작동합니다.

 

 

 

 

 

6. [참조] 많이 사용하는 JpaRepository 기본 제공 함수 예시 40가지 보러가기

 

https://growingsaja.tistory.com/982

 

[Kotlin][SpringBoot3] JpaRepository 기본적으로 제공하는 함수 예제 소스코드 모음

import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository interface UserRepository : JpaRepository { // 1. 데이터 저장 // INSERT INTO User... fun save(user: User): User // 2. 데이터 삭제 // DELET

growingsaja.tistory.com

 

 

 

 

+ Recent posts