반응형

2021/07 8

[Kotlin] Spring-Batch (JPA 적용) Junit5를 이용한 Test Code 작성

이번 글에서는 JPA를 적용한 Spring Batch Job을 테스트하는 글을 작성하겠습니다. 모든 소스는 Github에 올려두었습니다. 들어가기 전에 테스트 환경에서의 데이터베이스는 H2, Test Docker Container, Local 환경에 Database 띄우기 등 다양한 방법으로 테스트할 수 있습니다. 하지만 이번 글에서는 실제 DB에 붙었을 경우 테스트 데이터를 생성 삭제하기 위해서는 어떻게 하는지에 대해 작성했습니다. Job 먼저 JOB을 살펴보겠습니다. @Configuration class SimpleJobConfiguration( val jobBuilderFactory: JobBuilderFactory, val stepBuilderFactory: StepBuilderFactory, v..

[JPA] deleteAll() vs deleteAllInBatch()

이번 글은 본인이 프로젝트하던 중 크게 착각하여 데이터를 깔끔하게 지워버린 경험을 토대로 작성합니다. ( 팀원분들 다 죄송합니다.... 그나마 개발 DB여서 천만 다행이었습니다. ) 절대 저와 같은 실수를 하지 않기를 바라면서 작성합니다. 먼저 결론부터 작성하자면 deleteAll(), deleteAllInBatch()는 되도록이면 쓰지말자. 두 메서드 모두 Repository와 매핑되어있는 테이블의 데이터를 깔끔하게 지우는 명령입니다. 두 메서드가 어떻게 다른지 구현 코드를 살펴보겠습니다. deleteAll() @Repository @Transactional(readOnly = true) public class SimpleJpaRepository implements JpaRepositoryImpleme..

Daily Develop 2021.07.28

스트레스 해소 방법

스트레스!!! 사회에 뛰어든지 8년차가 되어갑니다. 다양한 경험을 해보았고 좋은 시간도 많았습니다. 하지만 스트레스 받는 시간도 많았습니다. 스트레스는 다양하게 찾아옵니다. 사회 초년생때에는 스트레스를 풀지 못해 탈모, 체중 증가로 몸 상태가 급격히 나빠졌었습니다. 몸이 아파 병원을 찾아가면 병원에서는 스트레스를 줄이라고 합니다. 스트레스는 가장 쉽게 접할 수 있으면서도 떼어내기 힘듭니다. 이러한 스트레스를 풀지 못하면 저처럼 몸 건강이 나빠질 것 입니다. 그래서 이번 글에서는 제가 스트레스를 푸는 방법에 대해서 적어보려 합니다. 해소법 제 기준으론 스트레스는 2가지 종류가 있다고 생각합니다. 스트레스를 해소하는 방법도 종류에 맞게 풀어야한다고 생각합니다. 분노 스트레스 스트레스를 받고 분노하는 경우입니..

MindControl 2021.07.19

[HttpStatus] API 처리 별 HttpStatus 리턴 코드 정리

단일 리소스 Method HttpStatus Code Description GET 200 OK GET 404 NOT FOUND 조회 시 데이터 없을 경우 POST 201 CREATED POST 400 BAD REQUEST 생성 요청 시 데이터가 올바르지 않음 PUT 202 ACCEPTED 데이터 전체 변경 PUT 404 NOT FOUND 고객 정보 업데이트 요청했으나 고객 정보를 찾을 수 없음 PATCH 202 ACCEPTED 데이터 일부 변경 PATCH 404 NOT FOUND 고객 정보 업데이트 요청했으나 고객 정보를 찾을 수 없음 DELETE 200 OK DELETE 404 NOT FOUND 고객 정보 삭제를 요청했으나 고객 정보를 찾을 수 없음 Collection Method HttpStatus ..

Daily Develop 2021.07.13

MongoDB 특징과 쉘 사용에 대해서 알아보자 - 2

이 글은 2개의 글로 이루어져 있습니다. 이전글을 보고 싶으시면 아래의 링크를 참조해주세요. 이전글 : MongoDB 특징과 쉘 사용에 대해서 알아보자 -1 반환받을 키 지정 모든 데이터를 항상 가져오면 네트워크상의 데이터 전송량과 클라이언트 ㅋ측에서 도큐먼트를 디코딩하는 데 드는 시간과 메모리를 줄여준다. db.users.find()를 하면 항상 _id는 반환된다. 만약 키를 쓰지 않는다면 fatal_weakness를 선언한다. > db.users.find() { "_id" : ObjectId("606d61ac67fe246be00de3ba"), "enemies" : 2, "relationships" : { "friends" : 32, "enemies" : 2 }, "username" : "joe" } ..

카테고리 없음 2021.07.12

Kotlin: Cannot inline bytecode built with JVM target 11 into bytecode that is being built with JVM target 1.8. Please specify proper '-jvm-target' option

문제 기존에 진행하던 프로젝트에 메모리 문제가 있어 지우고 새로 받아 테스트 코드를 돌렸는데 에러 발생 Kotlin: Cannot inline bytecode built with JVM target 11 into bytecode that is being built with JVM target 1.8. Please specify proper '-jvm-target' option 원인 JVM 11로 컴파일했는데 1.8로 컴파일을 하면 안된다!! 원인은 intellij 설정에서 JVM 11 로 설정이 되있지 않아서 해당 문제가 발생하였습니다. 해결 Project Structure 진입 방법: file > project Structure 1. project 에서 sdk 설정을 버전에 맞게 설정합니다. 2. Mo..

TroubleShooting 2021.07.05

[코틀린] 한글 깨질 때 인코딩처리

외부 API를 사용할 때 흔히 겪는 문제 중 하나로 한글깨지는 문제가 있습니다. 현재는 대부분 utf-8로 사용하지만 생성된지 오래된 경우에는 다양한 인코딩이 적용되어 한글이 깨져서 골머리 썩은 경험이 많을 것입니다. getMsg() 메소드를 이용하여 한글이 안깨지는 인코딩 방식을 사용합니다. private fun getMsg(msg: String) { println("utf-8 -> euc-kr : " + String(msg.toByteArray(Charset.forName("utf-8")), Charset.forName("euc-kr"))) println("utf-8 -> ksc5601 : " + String(msg.toByteArray(Charset.forName("utf-8")), Charset...

Daily Develop 2021.07.02

[코틀린 프로그래밍] Chapter.16 비동기 프로그래밍

코루틴은 논블로킹 호출을 구현하기 위한 훌륭한 방법입니다. 코루틴을 이용하면 작업을 동시 실행으로 할 수 있고 다른 코루틴 컨텍스트를 사용해서 병렬로 실행할 수 있습니다. 이번 글에서는 코루틴의 개념을 바탕으로 비동기 프로그래밍을 만들어보겠습니다. 비동기 프로그래밍 코루틴은 비차단방식을 사용합니다. 사용 용도로는 리모트 서비스 호출, DB 업데이터, 검색 등 즉시 수행되지 않는 행위들의 효율성을 높이기 위해 사용됩니다. 순차적으로 시작하기 날씨 정보를 가지고 오는 예제로 살펴보겠습니다. 먼저 외부 통신으로 가져온 데이터를 JSON으로 파싱하기 위해서 Klaxon 라이브러리를 추가합니다. implementation("com.beust:klaxon:5.5") 데이터를 가지고 있을 Airport 클래스와 온도..

Study/kotlin 2021.07.01
728x90
반응형