Hello, I’m Gyumyung Lee👋

Backend Programmer, Spring Boot, Java, Kotlin. and I consider it important to record. Such as TIL and Blog.

Latest Posts

우리는 같은 트랜잭션이었지만, 전파 레벨이 달랐을 뿐이야

개요 실무 업무를 하던 중 예기치 못하게 DB에서 특정 ID 값을 가진 데이터를 찾을 수 없다는 이슈가 발생했다. 처음에는 데이터를 생성해주는 로직에서의 문제인 줄 알았지만, 동일한 로직을 사용하는 다른 곳에서는 정상적으로 동작하는 것을 확인하고 아닌 것을 확인했다. 팀원들과 모여서 문제의 로직을 따라가보며 확인해보니 @Tr...

JPA 복합 키 사용하기

JPA 복합 키 사용하기 서론 실무에서 새로운 프로젝트를 진행하면서 새로운 DB 테이블을 생성해야 하는 경우가 있었는데, 해당 테이블을 복합 키로 설계해 만들게 되었다. 그러면서 사용하고 있는 ORM인 JPA에서 복합 키를 표현하고 사용해야 하는 상황이 발생하게 되었다. 이번 포스팅에서는 JPA에서 복합 키를 사용하는 대표...

Spring Security 6.1.0 버전 이상부터 메서드 체이닝 사용 지양 이슈

Spring Security 6.1.0 버전 이상에서의 메서드 체이닝 사용 지양 이슈 배경 설명 Spring Security 6.1.0 버전부터는 메서드 체이닝을 사용하는 방법은 지양하고 대신 람다식을 통해 함수형으로 사용하도록 변경되었다. 해결 방안과 예제 먼저 아래는 6.1.0 이전 버전에서 메서드 체이닝을 사용하여 S...

Spring Boot에 H2 database 연결하여 개발 환경 구축하기

Spring Boot에 H2 database 연결하여 개발 환경 구축하기 H2의 필요성 개인 프로젝트를 개발하면서 이전에는 클라우드 서버에 Mysql과 같은 DBMS 환경을 구성한 후, 해당 서버에 연결해서 DB 환경을 구축하여 개발했다. 하지만 이렇게 구성하다보니 개발할 때마다 서버를 실행하고, 서버에 접속해서 DBMS를 ...

Kotlin - 6.함수형 프로그래밍 다루기

Kotlin 문법 배우기 코틀린의 함수형 프로그래밍 (Functional Programming) 다루기 배열과 컬렉션 다루기 배열 이펙티브 자바에서도 나온 내용인데 프로덕션에서 배열은 잘 사용하지 않는다. 문법만 간단히 짚고 넘어가보자. fun main() { val array = arrayOf(100, 200, ...

Kotlin - 5.상속, 접근제어, object 다루기

Kotlin 문법 배우기 코틀린에서 상속, 접근제어 및 object 다루기 1. 상속 추상 클래스 Animal이라는 추상클래스를 구현한 예제를 먼저 살펴보자. 자바로 먼저 살펴보면 다음과 같은 형태일 것이다. public abstract class Animal { protected final String specie...

Kotlin - 4.클래스 다루기

Kotlin 문법 배우기 코틀린에서 클래스 다루기 1. 클래스 클래스와 프로퍼티 우선 다음과 같은 자바의 클래스가 있다고 해보자. public class Person { private final String name; // 변경 불가능한 필드 private int age; public Per...

Kotlin - 3.제어문, 반복문, 예외, 함수 다루기

Kotlin 문법 배우기 코틀린의 제어문, 반복문, 예외, 함수 다루기 1. 제어문 if 문 다음과 같은 자바 코드를 살펴보자. 아래 함수는 받는 int 인자가 0보다 작으면 예외를 던지는 함수이다. private void validIntegerNotNegative(int num) { if (num < 0) {...

Kotlin - 2.연산자 다루기

Kotlin 문법 배우기 코틀린의 연산자 다루기 1. 단항 연산자와 산술 연산자 단항 연산자, 산술 연산자, 그리고 산술대입 연산자는 자바와 코틀린 모두 동일하다. 단항 연산자 산술 연산자 산술대입 연산자 ++ – + - ...

Kotlin - 1.변수와 타입 다루기

Kotlin 문법 배우기 코틀린의 변수와 타입 다루기 1. 변수 선언 키워드 코틀린에서 변수 선언 키워드로 var과 val이 있다. var number1 = 10 val number2 = 10 두 키워드의 차이점으로는 var은 수정할 수 있는 변수, val은 수정 불가능한 변수를 의미한다. 단, val 키워드로 선언한 ...