티스토리 뷰
오래전에 Java에서 JPA를 사용하는 글을 올려본 적이 있어요.
그래서 이번에는 Kotlin에서도 가능할 것인지 테스트 겸 프로젝트를 구성해보았습니다.
먼저 프로젝트를 만들어봐야겠죠?
IntelliJ를 사용하였고, Spring Initializr를 사용했습니다!
File -> New -> New Project에서 Spring Initializr를 선택합니다.
프로젝트명과 그룹도 정해주시고 Type은 Gradle Project, Language Kotlin으로 설정합니다.
다음으로 Dependency를 선택할 부분인데 API의 용도로만 사용하기 위해 심플하게 선택했습니다.
제가 잘못한 게 '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 |