[Kotlin] 5. 반복문
·
Kotlin/Kotlin 입문
1. 반복문의 필요성반복문은 똑같은 내용을 계속해서 출력하거나 규칙이 있는 같은 동작을 반복해야 하는 경우에 사용하여 코드를 효율적으로 작성할 수 있습니다.fun main() { println("Hello World!") println("Hello World!") println("Hello World!")}fun main() { var total = 0 total += 1 total += 2 total += 3 println("total=$total")}2. 반복문의 종류반복문은 특정 로직을 반복 실행할 때 사용합니다. 코틀린(Kotlin)에서는 for와 while을 제공합니다.for 문시작 index부터 마지막 index까지 값을 증가시키면서 블록을 실행합니다..
[Kotlin] 4. 조건문
·
Kotlin/Kotlin 입문
1. 조건문조건문이 왜 필요할까?우리는 일상 속 여러 상황들 속에서 많은 결정을 내립니다. 프로그램 또한 마찬가지입니다. 여러상황에 맞게 실행되어야하는 코드가 다를 수 있습니다. 조건문이 없는 프로그램은 여러 상황에대응할 수 없습니다.fun main() { println("AAA") println("BBB") println("CCC")}조건문특정 조건에 따라 서로 다른 동작을 실행하기 위해 사용합니다.코틀린(Kotlin)에서는 if, else if, else, 그리고 when 을 제공하고 있습니다.2. if, else if, else 구조기본 if문fun main() { val dust: Int = 30 if (dust 35) { println("집에서 논다") ..
[Kotlin] 3. 연산자
·
Kotlin/Kotlin 입문
1. 연산자주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 합니다.연산을 수행하는 기호를 연산자라고 합니다.코틀린(Kotlin)에서 제공하는 연산자 중에 산술 연산자, 복합 대입 연산자, 증감 연산자, 비교 연산자, 논리 연산자 에 대해서 알아봅니다.2. 산술 연산자+ : 더하기- : 빼기* : 곱하기/ : 나누기% : 나누고 남은 나머지 값fun main() { val a: Int = 3 val b: Int = 2 println(a + b) // 5 println(a - b) // 1 println(a * b) // 6 println(a / b) // 1 println(a % b) // 1}3. 복합 대입 연산자연산하여 왼쪽 변수에 할당합니다.+===/=%=..
[Kotlin] 2. 변수
·
Kotlin/Kotlin 입문
1. 변수변동이 심한, 가변적인, 변할 수 있는 숫자를 말합니다.프로그래밍에서 말하고 싶은 변수의 뜻은 가변할 수 있는 값을 저장할 수 있는 저장공간입니다.프로그램을 만드는 주재료가 됩니다.2. 변수 선언 기본 형태var/val 변수명: 변수타입 = 초기화값fun main() { println("Hello, World!") // var/val 변수명: 변수 타입 = 초기화값 var name: String = "박준용" // 변동 불가능 val age: Int = 26 // 변동 가능 val alive: Boolean = true // 변동 가능}val(Immutable: 불변의) - 읽기val 로 선언된 변수는 초기에 값을 할당하면 더이상 값을 변경할 수 ..
[Spring] JWT 서명 검증의 원리
·
Spring/Spring
서론유튜브를 보다가 우연히 JWT에 대해 설명해 주는 영상을 접하게 되었습니다. 영상을 보며 JWT의 서명 검증 원리를 너무 쉽게 설명해 주어서, 이를 바탕으로 본 게시글을 작성하게 되었습니다. 이번 포스팅에서는 JWT의 기본적인 구조와 서명 생성 및 검증 과정을 쉽게 설명해 보려고 합니다.JWT 구조 JWT(JSON Web Token)는 세 가지 주요 구성 요소로 이루어져 있습니다: 헤더(header), 페이로드(payload), 서명(signature). 이 이미지는 JWT의 각 부분을 시각적으로 설명합니다. 헤더(Header): 알고리즘 유형과 토큰 유형을 지정합니다. 예시에서는 HS256 알고리즘과 JWT 타입이 사용되었습니다.페이로드(Payload): 토큰의 데이터가 포함된 부분입니다. 여기에는..
[Spring Boot] JPA @MapsId를 이용한 FK를 PK로 사용하기
·
Spring/Spring Boot
이번 프로젝트에서 JPA 엔티티를 설계하면서 외래 키를 기본 키로 사용하는 경우를 마주하게 되었습니다. 이 과정에서 활용한 기능이 바로 @MapsId입니다. 이 글에서는 @MapsId 어노테이션을 사용하여 외래 키를 기본 키로 설정하는 방법과 그 이점에 대해 설명하고자 합니다.1. 프로젝트 배경이번 프로젝트에서는 Profile 엔티티와 ProfileImage 엔티티 간의 관계를 설정해야 했습니다. Profile 엔티티는 유저의 프로필 정보를 담고 있으며, ProfileImage 엔티티는 프로필 이미지 정보를 저장합니다. 이때, ProfileImage 엔티티의 기본 키로 Profile 엔티티의 기본 키를 사용하고자 했습니다. 이를 구현하기 위해 JPA의 @MapsId 어노테이션을 활용하게 되었습니다.2. ..
[Spring Boot] @NoargsConstructor(AccessLevel.PROTECTED), @Builder
·
Spring/Spring Boot
이번 프로젝트를 진행하면서 JPA Entity 클래스의 설계를 더욱 견고하게 하기 위해 @NoArgsConstructor(access = AccessLevel.PROTECTED) 기능을 활용하게 되었습니다. 이 접근 방식을 통해 객체의 상태를 관리하고, 명확한 설계 의도를 표현하는 방법을 최적화할 수 있었습니다. 특히, JPA를 사용하는 Spring 애플리케이션에서 엔티티 클래스의 기본 생성자 접근을 제어하는 것이 얼마나 중요한지 알게 되었습니다. 1. JPA와 기본 생성자JPA는 엔티티 클래스를 인스턴스화할 때 기본 생성자를 사용합니다. 따라서, 모든 엔티티 클래스는 기본 생성자를 제공해야 합니다. 기본 생성자가 없으면 JPA는 엔티티 클래스를 인스턴스화할 수 없고, 이는 곧 런타임 예외로 이어집니다...
[Spring Boot] Flyway를 이용한 DB 형상관리
·
Spring/Spring Boot
1. Flyway란?Flyway는 데이터베이스의 버전 관리 및 마이그레이션을 간편하게 도와주는 오픈 소스 라이브러리입니다. 데이터베이스 스키마와 데이터의 변경 이력을 코드로 관리할 수 있으며, 변경 사항을 쉽게 추적하고 반영할 수 있게 합니다.  2. Flyway의 주요 기능버전 관리: 데이터베이스 변경 이력을 버전별로 관리할 수 있습니다.자동 마이그레이션: 애플리케이션 시작 시 자동으로 데이터베이스 변경 사항을 적용할 수 있습니다.다양한 데이터베이스 지원: MySQL, PostgreSQL, Oracle 등 다양한 데이터베이스를 지원합니다.Rollback 기능: 잘못된 마이그레이션을 쉽게 되돌릴 수 있습니다. 3. Flyway 설정 및 사용 방법3.1. Flyway 의존성 추가먼저 프로젝트에 Flyway..
Spring Data JPA: 메서드 이름 기반 쿼리와 @Query 애노테이션 기반 쿼리 비교
·
Spring/Spring
Spring Data JPA를 사용하면 데이터베이스와의 상호작용을 쉽게 처리할 수 있습니다. 두 가지 주요 방법으로 쿼리를 정의할 수 있습니다. 메서드 이름 기반 쿼리와 @Query 애노테이션 기반 쿼리 이 두 가지 방법의 차이점과 장단점을 설명하겠습니다. 1. 메서드 이름 기반 쿼리란?메서드 이름 기반 쿼리는 Spring Data JPA에서 제공하는 강력한 기능으로, 메서드 이름을 분석하여 자동으로 쿼리를 생성하는 방식입니다. 메서드 이름의 접두사와 속성 이름을 사용하여 쿼리를 생성합니다.public interface ChampionRepository extends JpaRepository { Champion findByName(String name);}이 예제에서 findByName 메서드는 S..
[Spring Boot]스프링 부트에서 ddl-auto 사용 방법
·
Spring/Spring Boot
스프링 부트에서 ddl-auto 설정은 애플리케이션의 JPA(Hibernate)와 관련된 데이터베이스 스키마 관리 방식을 제어하는 중요한 설정입니다. 이 블로그 게시글에서는 ddl-auto 옵션을 사용하여 스키마 관리 작업을 어떻게 수행할 수 있는지 설명하겠습니다.1. DDL-AUTO 옵션이란?ddl-auto 옵션은 JPA 구현체인 Hibernate가 애플리케이션 시작 시 데이터베이스 스키마를 어떻게 처리할지를 결정합니다. 가능한 값들은 다음과 같습니다:none: Hibernate가 스키마 관리 작업을 수행하지 않습니다.validate: Hibernate가 엔티티와 데이터베이스 스키마를 검증하지만, 변경하지 않습니다.update: Hibernate가 엔티티와 데이터베이스 스키마를 비교하여 필요한 변경을 ..
JoonYong
Dev Notes