반응형

Kotlin 19

[Kopring] JPA Auditing - 생성/수정 시각 설정 및 테스트

JPA Auditing 프로젝트 작성 시 트래킹을 목적으로 엔티티의 생성 시간과 수정 시간 등을 테이블에 저장하여 관리해야 한다. 이를 쉽게 구현하기 위해 Spring Data JPA는 Auditing이라는 엔티티의 변경 내역을 추적하고 기록하는 기능을 제공한다. 이를 통해 엔티티의 생성일자, 수정일자 등을 쉽게 관리할 수 있다. 다음은 JPA Auditing 기능을 사용하지 않고 수동으로 관리하는 경우의 User 엔티티다. @Entity class User( ... ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null ... @Column(nullable = false, updatable = false) var ..

[Kotlin] 코틀린 문자열 템플릿(String Templates) 이해하기

코틀린에는 문자열 템플릿이 있다. 문자열 내에 변수나 표현식을 사용하여 값을 문자열에 포함시킬 수 있도록 한다. 주로 문자열을 동적으로 구성할 때 사용하며, 코드를 간결하게 작성하는 데 도움이 된다. 변수 이름 앞에 $를 붙이면, 문자열 템플릿이 변수의 값을 문자열에 담아준다. fun main() { val number = 42 println("number = $number") } // 출력 number = 42 $ 다음에 오는 대상이 숫자인 경우에는 이를 인식하지 않으며 그대로 출력한다. 또한, $ 다음에 문자가 오는 경우 $ 앞에 역슬래시(\)를 붙여 그대로 출력할 수 있다. fun main() { val number = 123 println("$number") println("$123") print..

[Kotlin] 코틀린 조건문(if, when) 활용 및 예제

조건문은 프로그램 내에서 특정 조건이 참(true) 또는 거짓(false) 일 때 서로 다른 동작을 실행하기 위해 사용하는 제어문이다. 조건문은 프로그램의 흐름을 조절하고 다양한 상황에 대응할 수 있도록 도와준다. 코틀린은 조건 제어문으로 if 문과 when 식을 제공하고 있다. if 문 if 키워드는 식을 검사해 그 값이 true나 false 중 어느 것인지 알아내고, 그 결과에 따라 작업을 수행한다. 이처럼 참이나 거짓을 표시하는 식은 불리언(Boolean)이라고 한다. 코틀린의 if 문의 간단한 사용 예시는 다음과 같다. fun main() { if (1 > 0) { println("1은 0보다 크다.") } if (10 < 11) { println("10 < 11") println("10은 11보..

[Kotlin] 코틀린 함수(Function) 개념 및 예제

💡 함수(function)는 이름이 있는 작은 프로그램과 같으며, 다른 함수에서 그 이름으로 실행하거나 호출(invoke)할 수 있다. 함수(Function) 함수는 일련의 동작을 묶어주며, 프로그램을 체계적으로 구성하고 코드를 재사용하는 가장 기본적인 방법이다. 함수에 정보를 전달하면, 함수는 그 정보를 이용해 계산을 수행하고 결과를 만들어낸다. 코틀린 함수의 기본적인 형태는 다음과 같다. fun 함수이름(p1: 타입1, p2: 타입2, ...): 반환타입 { 구현할 코드... return 결과 } p1과 p2는 함수에 전달할 파라미터(parameter)다. 각 파라미터는 괄호 안에 식별자와 타입으로 구성되어 있으며, 콜론(:)으로 구분한다. 파라미터 뒤에 함수가 생성할 결과의 타입을 나타내는 반환 타..

[Kotlin] 코틀린 데이터 타입 이해하기

데이터 타입 코틀린에서 소수 5.5와 정수 5를 더해보자. fun main() { println(5.5 + 5) } // 출력 10.5 10.5라는 새로운 소수가 출력된다는 것은 이미 예상했을 것이다. 코틀린에서는 5.5와 같은 소수는 Double, 5와 같은 정수를 Int 타입이다. 또한 두 수를 더한 결과는 10.5라는 Double 타입으로 출력하게 된다. 따라서 코틀린은 타입을 사용해 5.5 + 5라는 식이 올바른 식인지 검증하고, Double 타입의 새 값을 만들어 연산 결과를 저장한다. 타입(Type)은 사용자가 데이터를 어떤 식으로 사용할지를 코틀린에게 전달해 준다. 데이터에 대해 적용할 수 있는 연산, 데이터의 의미, 타입에 속한 값을 저장하는 방식을 정의한다. 그렇다면 문자열 타입인 Str..

[Kotlin] 코틀린 var과 val 이해하기

식별자(Identifier) 식별자(변수명)는 프로그램을 이루는 요소를 가리키기 위해 사용한다. 데이터를 가리키는 식별자를 사용할 때는 가장 기본적으로 선택해야 하는 사항이 있다. var : 변할 수 있는 수(variable)의 약자로, 내용을 재대입할 수 있다. val : 값(value)의 약자로, 식별자의 값을 단 한 번만 초기화할 수 있다. 값을 초기화하고 나면 내용을 변경할 수 없다. 변할 수 있는 수 var var은 다음과 같이 정의한다. var 식별자 = 초기화 몇 가지 var 정의를 살펴보자. fun main() { var number = 8 var pi = 3.14 var words = "Hello Kotlin!" println(number) println(pi) println(words)..

[Kotlin] 코틀린이란 무엇이며, 왜 필요한가? - Kotlin In Action

코틀린은 무엇인가? 코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어로 간결하고 실용적이며, 자바 코드와의 상호운용성(Interoperability)을 중시한다. 현재 자바가 사용 중인 곳이라면 거의 대부분 코틀린을 활용할 수 있다. 대표적으로 서버 개발, 안드로이드 앱 개발 등의 분야에서 코틀린을 쓸 수 있다. 코틀린 맛보기 코틀린의 첫인상 data class Person ( val name: String, val age: Int? = null ) fun main(args: Array) { val persons = listOf( Person("Alice"), Person("Bob", age = 29) ) val oldest = persons.maxBy { it.age ?: 0 } println(..

[Ktor] Ktor 프레임워크 서버 환경 변수 설정하기 - yml, hocon

개요 Ktor 프로젝트에서는 호스트 주소, 포트 번호, 모듈 등과 같은 서버 환경 변수를 다양한 방법으로 구성할 수 있다. 스프링 프로젝트에서는 서버 환경 변수를 properties 또는 yml 파일로 구성하는 반면에 Ktor 프로젝트는 서버 환경 변수를 애플리케이션 내에서 코틀린 코드로 구성하는 방법과, 스프링 프로젝트와 유사한 파일로 구성하는 방법으로 구분된다. 코트로 서버 환경 변수를 설정하는 방법보다 yml과 같은 파일로 서버 환경 변수를 구성하는 것이 친숙하기 때문에 파일로 환경 변수를 구성하는 방법을 알아보고자 한다. 의존성 추가 Ktor에서는 파일로 서버 환경 변수를 구성할 때 YMAL(.yml 또는 .ymal) 파일과 HOCON(.conf) 파일로 구성할 수 있다. 만약, yml 파일로 서..

[Ktor] Kotlin + Ktor 환경에서 의존성 주입하는 방법 - Dependency Injection

Intro Ktor 프레임워크는 Spring과는 달리 의존성 주입(DI)에 대한 기능을 기본적으로 제공하지 않는다. 따라서 수동으로 의존성 주입 설정을 하거나, 의존성 주입 라이브러리를 사용해야 한다. 코틀린 DI 라이브러리는 대표적으로 Koin, Dagger 등이 존재한다. 이 외에도 다양한 라이브러리들이 존재하지만 일반적으로 많이 사용되는 Koin 라이브러리를 사용하여 의존성 주입을 하고자 한다. 의존성 주입은 애플리케이션의 구성 요소를 느슨하게 결합(Loose Coupling)하여 코드 유지보수성과 테스트 용이성을 향상한다. 의존성 추가 Koin 라이브러리를 사용하기 위해 다음과 같이 의존성을 추가한다. build.gradle.kts dependencies { ... implementation("i..

[Kopring] 코틀린 스프링 환경에서 JPA Entity 정의하기

Intro JPA는 Java 진영의 표준 ORM 프레임워크로 자바 언어에 특화되어 있다. 코틀린 언어가 자바와 뛰어난 상호운용성을 가지고 있다고 하더라도 자바 언어에 특화된 하이버네이트를 적용시키다 보면 예상치 못한 문제 상황과 더 나은 엔티티를 정의하기 위해 고민해야 할 부분이 많았다. 따라서 코틀린 + 스프링 환경에서 JPA를 적용하기 위해 엔티티를 정의하는 단계에서 만난 문제와 이를 해결하기 위해 고민했던 내용을 정리하고자 한다. 코틀린 클래스는 기본이 final 코틀린에서 클래스, 함수, 프로퍼티는 기본적으로 final로 선언되어 상속이 불가능하다. 하이버네이트에서 제공하는 Entity 클래스는 final일 수는 있지만 지연 로딩(Lazy loading)을 위한 프록시 객체를 생성할 수 없다. 따..

반응형