[Kotlin] Spring Boot로 웹 개발 연습 - 로그인 API(1)

[Kotlin] Spring Boot로 웹 개발 연습 - 로그인 API(1)

첫 작성: 21-09-07

Kotlin 및 Spring Boot의 사용은 물론, 개발이라곤 Java 공부가 다이며 Oracle만 사용했으며 개발을 1년 가까이 쉬어 개념이 잡히지 않은 내가 Kotlin 실무를 진행함에 있어 어려움을 겪을 것이 예상됨으로 이 글을 작성함.

Kotlin과 Spring Boot를 시작하며 (+ MariaDB)

내가 다루었던 언어라고는 Java, Python 그리고 PHP 정도. 데이터베이스는 Oracle과 MySQL을 다뤄 보았기에 현재 실무에 쓰이는 Kotlin과 MariaDB는 처음이다. 미숙한 점들이 너무 많기에 일기 형식으로 작성하려고 한다. 혹시라도 Kotlin으로 웹 개발을 처음 시작하는 사람들에게도 도움이 될 수 있기를 바라며.

JPA를 활용한 DB 연동하기

아직까지 JPA에 대한 뚜렷한 개념이 없어, 구글링을 통해 얻은 소스를 조합하여 DB를 연동했다.

application.yml

spring: datasource: url: jdbc:mariadb://localhost:3306/{DataBase} driver-class-name: org.mariadb.jdbc.Driver username: {username} password: {password} jpa: open-in-view: false generate-ddl: true show-sql: true hibernate: ddl-auto: update

{ } 부분에는 본인의 데이터베이스와 계정을 작성하면 된다. 본인은 JPA 부분에 대한 이해는 아직 멀었다.

그리고 간단하게 DB 연결 확인을 위하여 Controller, Model, Repository를 만들었다. 사실 아직 MVC 모델을 많이 다뤄보지 않아 Model/Entity 등의 구분법이 많이 미숙하다. 공부가 필요. !!

참고로 패키지 형태는 이렇다.

kotlin

com.hello.login

controller

UserController.kt

model

User.kt

repository

UserRepository.kt

User.kt

package com.hello.login.model import javax.persistence.* @Entity @Table(name = "user") data class User( @Id // @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") val id: Int? = null, @Column(name = "name") val name: String? = "" )

@GeneratedValue 어노테이션은 JPA 사용할 때 쓴다고 되어 있었으나, 사실 언제 사용하는지 확실치 않아 뺐다. 우선은 DB 연동은 되었다. 공부 필요. !!

UserRepository.kt

package com.hello.login.repository import com.hello.login.model.User import org.springframework.data.jpa.repository.JpaRepository interface UserRepository: JpaRepository

UserController.kt

package com.hello.login.controller.api import com.hello.login.repository.UserRepository import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/users") class UserController( val userRepository: UserRepository ) { @GetMapping("") fun getUsers(): ResponseEntity<*>{ val users = userRepository.findAll() return ResponseEntity.ok(users) } }

findAll()은 따로 만들지 않아도 JPA에 내장되어 있는 듯하다. 이 부분도 공부 필요. !!

결과, DB에 있는 컬럼들이 잘 나온다.

로그인 중에서 정보 불러오는 것까지는 어떻게 했다.

앞으로는 정보 받기 + 정보 확인 + 로그인 + 정보 수정으로 갈 예정.

앞으로 실무를 위해서 해야 할 것들.

JWT Spring Security + JSON 소켓통신 JS DOM Controll

from http://morugetta.tistory.com/12 by ccl(A) rewrite - 2021-09-07 14:00:54