티스토리 뷰

Server

[Kotlin] MongoDB JPA 사용하기

니용 2020. 6. 30. 23:57
반응형

오래전에 Java에서 JPA를 사용하는 글을 올려본 적이 있어요.

그래서 이번에는 Kotlin에서도 가능할 것인지 테스트 겸 프로젝트를 구성해보았습니다.

 

먼저 프로젝트를 만들어봐야겠죠?

 

IntelliJ를 사용하였고, Spring Initializr를 사용했습니다!

 

File -> New -> New Project에서 Spring Initializr를 선택합니다.

 

프로젝트명과 그룹도 정해주시고 Type은 Gradle Project, Language Kotlin으로 설정합니다.

다음으로 Dependency를 선택할 부분인데 API의 용도로만 사용하기 위해 심플하게 선택했습니다.

4개 선택했는데 나중에 모자라면 더 추가하죠 뭐!

제가 잘못한 게 'Spring Web Starter'가 추가가 안되었습니다 ㅠㅠㅠ 추가해주세요.

 

프로젝트가 생성되고 build.gradle.kts 파일에 인젝션이 되었습니다!

프로젝트 내 패키지를 만들고 모델을 먼저 만들어봅니다.

 

User.kt

package com.example.demo.model

import org.springframework.data.mongodb.core.mapping.Document
import java.time.LocalDateTime
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id

@Document(collection = "user")
data class User(
    var name: String? = null
) {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    var userId: Long? = null
    var password: String? = null
    var nickname: String? = null
    var createdDatetime: LocalDateTime = LocalDateTime.now()
    var loginCount: Int = 0
}

@Document : MongoDB를 썼을 때 클래스의 이름이 하나의 테이블처럼 되게 만드는 어노테이션

+옵션으로 collection값을 넣으면 해당 컬렉션으로 데이터가 매핑됩니다.

@Id : Primary Key의 역할

@GeneratedValue : AUTO_INCREMENT의 역할

 

그리고 Repository를 만듭니다.

 

UserRepository.kt

package com.example.demo.repo

import com.example.demo.model.User
import org.springframework.data.mongodb.repository.MongoRepository
import org.springframework.stereotype.Repository

@Repository
interface UserRepository : MongoRepository<User?, Long?>

그다음은 컨트롤러인데, @GetMapping을 하기 위한 spring-boot-starter-webflux를 넣어주지 않아 import가 안되더라고요..ㅠㅠ 아래와 같이 추가해줍시다.

 

 

편의상 Service 없이 진행하였습니다.

 

IndexController.kt

package com.example.demo.controller

import com.example.demo.repo.UserRepository
import com.example.demo.model.User
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.ui.Model
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class IndexController {

    @Autowired
    lateinit val userRepository: UserRepository

    @GetMapping("/user")
    fun getUsers(): List<User?> {
        return userRepository.findAll()
    }

    @PostMapping("/insert")
    fun insertUser(model: Model) {
        var user = User(model.getAttribute("name").toString())
        userRepository.insert(user)
    }
}

여기까지 JPA를 통해 MongoDB에 데이터를 입력하는 부분까지 확인해보았습니다.

반응형

'Server' 카테고리의 다른 글

[Java] Files를 사용하여 입력하기  (0) 2020.07.02
Kotlin의 Pair와 Triple  (0) 2020.07.02
Kotlin의 Type과 Nullable (3)  (0) 2020.07.01
MongoDB 설치하기  (0) 2020.06.30
Kotlin의 lateinit과 Nullable (2)  (0) 2020.06.30
Kotlin의 생성자와 data class  (0) 2020.06.29
댓글
공지사항