반응형

프레임워크(Framework) 99

[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 ..

[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)을 위한 프록시 객체를 생성할 수 없다. 따..

[Ktor] Kotlin + Ktor 환경에서 Ktorm ORM 엔티티 작성 및 테이블 매핑하기

Ktorm의 Table과 Entity Ktorm에서 엔티티 정의와 테이블 매핑은 Table 클래스와 Entity 인터페이스를 통해 작성할 수 있다. Table 클래스 Ktorm의 Table 클래스는 데이터베이스 테이블을 나타내는 클래스로 테이블의 구조와 열(Column)을 정의할 수 있다. Table 클래스를 통해 데이터베이스와 상호 작용할 수 있다. 데이터베이스의 타입에 대응하는 함수들과, 키 설정 함수, 엔티티와 매핑하기 위한 바인딩 함수 등을 제공한다. 타입 함수 long(), varchar(), int(), boolean(), date() 등 키 설정 함수 primaryKey() : 기본키 설정 references() : 외래키 설정 object Departments : Table("t_depar..

[Ktor] Kotlin + Ktor + Ktorm 환경에서 MySQL 연동하기

Ktorm 자바 스프링 또는 코틀린 스프링에서 사용하는 ORM인 JPA가 있다면, ktor 프레임워크에서 사용할 수 있는 ORM은 Exposed 또는 Ktorm이 있다. 이 중에서도 Ktorm은 Kotlin에서 사용할 수 있는 JDBC 기반의 ORM 프레임워크다. Kotlin 프로젝트에서 데이터베이스 운영에 대하여 중복 코드를 줄이고 코틀린 코드로 SQL 쿼리를 작성할 수 있는 DSL 기능과 시퀀스 API를 제공한다. Ktorm 공식 문서 : https://www.ktorm.org/ Ktorm | Kotlin ORM lib with SQL DSL What’s Ktorm? Ktorm is a lightweight and efficient ORM Framework for Kotlin directly base..

[Ktor] Kotlin 객체로 Yml 파일 읽어서 사용하기 - Jackson 라이브러리 활용

Intro Spring Boot에서는 @Value 어노테이션을 통해 yml, properties 등 파일의 구성 정보를 쉽게 읽어서 값을 가져올 수 있다. 반면에 Ktor 프레임워크에서는 Kotlin 코드, HOCON(.conf), YAML(.yaml 또는 .yml) 파일을 통해 다양한 서버 환경 변수를 구성할 수 있다. yml(yaml) 파일을 통해 설정한 정보들을 관리할 경우에는 여러 라이브러리(Jackson, snakeyaml 등)를 활용하여 yml 파일을 직접 읽어서 변환한 후 사용해야 한다. Spring Boot 환경과 유사하게 YML 파일로 서버 환경 변수를 구성하고, Jackson 라이브러리를 활용해서 YML 파일을 객체로 매핑하여 프로퍼티 값으로 사용해 보고자 한다. build.gradle..

[Spring Batch] 스프링 배치 StepContribution 이해하기 - Spring boot 2.x

StepContribution StepContribution은 Chunk 기반 Tasklet에서 Chunk 프로세스의 변경 사항을 버퍼링 한 후 StepExecution 상태를 업데이트하는 도메인 객체다. Chunck 커밋 직전에 StepExecution의 apply 메서드를 호출하여 상태를 업데이트한다. ExitStatus의 기본 종료코드 외 사용자 정의 종료코드를 생성해서 StepExecution에 적용할 수 있다. StepContribution의 구조 readCount : 성공적으로 read한 아이템 수 writeCount : 성공적으로 write한 아이템 수 filterCount : ItemProcessor에 의해 필터링된 아이템 수 parentSkipCount : 부모 클래스인 StepExecu..

[Ktor] Ktor Framework HTTP API 작성 및 테스트

Intro Ktor 프레임워크의 공식문서를 기반으로 학습하여 간단히 HTTP API를 만들어 실행까지 해보는 것을 목표로 한다. 본 내용은 실제 데이터베이스를 사용하여 정보를 관리하지 않고 간단히 리스트에 저장하여 실습한다. 백엔드 역할을 수행할 수 있는 HTTP API 만들기 API 엔드포인트를 구성하고 정의하기 직렬화 플러그인을 통해 JSON 변환 단순화하기 고객(Customer)과 주문(Order)에 대한 정보 조회 고객(Customer) 정보 추가 및 제거 Ktor 프로젝트 생성하기 프로젝트 생성 Ktor Project Generator(https://start.ktor.io/) 또는 IntelliJ IDEA Ultimate를 통해 프로젝트를 생성한다. Ktor 프로젝트 생성 방법은 아래 게시글에..

[Spring Batch] 스프링 배치 StepExecution 이해하기 - Spring boot 2.x

본 내용은 온라인 강의 사이트 인프런의 정수원 님의 강의 내용이 포함되어 있습니다. 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch - 인프런 | 강의 초급에서 중~고급에 이르기까지 스프링 배치의 기본 개념부터 API 사용법과 내부 아키텍처 구조를 심도있게 다룹니다. 그리고 스프링 배치 각 기능의 흐름과 원리를 학습하게 되고 이를 바탕으 www.inflearn.com Intro 스프링 배치의 도메인은 크게 두 가지로 나눌 수 있다. 배치를 특정 단계 또는 흐름에 따라 처리하고 구성하는 역할을 하는 도메인 Job, Step, Flow, Tasklet, … 배치의 단계마다 실행 정보나 상태 정보를 데..

반응형