Java
-
Spring JPA - Maria DB 트랜잭션 로컬 테스트Java 2025. 1. 14. 01:45
신규로 사용하게 되는 Spring JPA와 Maria DB 간에 트랜잭션이 정확히 어떤 형태로 처리되는지 확인해보기로 하였습니다. 애플리케이션은 어떤 요구사항이 트랜잭션에서 처리되길 원하는가?로컬 Docker 환경에서의 Maria DB 동작 체크테스트 컨테이너 기반 테스트 케이스 추가 (아래의 코드는 git에 올려두었습니다: https://github.com/kadensungbincho/txtest)애플리케이션은 어떤 요구사항이 트랜잭션에서 처리되길 원하는가?유저가 가입하는 기능만 있는 간단한 애플리케이션을 가정했습니다. 가입에는 동일한 닉네임과 이메일을 사용하지 못하는 제약이 있는데요. 그 부분을 위해 아래와 같이 코드를 작성했습니다. @Transactional public void si..
-
코틀린, 스프링 기반 마이크로서비스 개발을 위해 읽은 책들Java 2022. 3. 11. 09:45
약 3개월 전, 새로운 팀에 합류하게 되었습니다. Kotlin, Spring Webflux, MySQL, Redis, Kafka, GRPC로 이어지는 새로운 기술 스택에 적응하기 위해 많은 자료들을 찾아보게 되었는데요. 이번 글에서는, 적응하기 위해 읽었던 책들 중 추천할만한 책들을 공유해보려고 합니다. 추천하는 책들 읽어볼만한 책들 추천하는 책들 추천하는 책들은 다뤄주고 있는 내용에 익숙하지 않다면, 50% 이상 정독을 권하는 책들입니다. Effective Kotlin by Marcin Moskala Kotlin의 기초 문법 보다는 실제로 Kotlin을 자주 사용할 때의 best practices들이 담겨 있습니다. Python, Java의 Effective 시리즈와는 다른 출판사에서 출시되었으나, e..
-
Kotlin Coroutines for BackendJava 2022. 2. 21. 22:09
최근 코틀린으로 Spring Webflux 기반의 서비스를 만들며 suspend, withContext 등등 다양한 코틀린 코루틴들을 살펴보게 되었습니다. 코틀린의 기본적인 문법은 익숙해졌지만, 코드를 살펴봐도 명확히 이해되지 않는 부분들이 바로 코루틴과 관련된 부분들이었는데요. 이번 글에서는 [1]을 기반으로, 코틀린의 코루틴이 무엇인지 알아보도록 하겠습니다: 왜 코루틴을 사용할까? Sequence builder Suspension은 어떻게 동작하는가? Coroutine의 내부구조 왜 코루틴을 사용할까? JVM 상에서는 이미 잘 갖춰젼 RxJava 또는 Reactor와 같은 라이브러리가 있습니다. 더욱이, 자바는 멀티쓰레딩을 지원하고 일부는 오래된 callback 형태를 선호하기도 합니다. 비동기 연산..
-
Kotlin Inline modifier의 장점Java 2022. 1. 2. 21:00
inline modifier가 무엇인지 먼저 알아보고, 어떤 장점이 있는지 기술합니다. [1]의 내용을 중심으로 정리하였습니다. Inline Modifier란? 코틀린의 stdlib을 살펴보면, 거의 모든 higher-order functions이 inline modifier를 달고 있는 것을 볼 수 있습니다. 예로, stdlib의 repeat function은 아래와 같습니다: inline fun repeat(times: Int, action: (Int) -> Unit) { for (index in 0 until times) { action(index) } } inline이 컴파일될 때에 하는 일은, 해당 함수를 사용하는 모든 곳을 함수의 body로 변경하도록 합니다. 또한, repeat 내부에서 함수..
-
JDBC란? (feat. 데이터베이스 커넥션 풀링)Java 2021. 10. 24. 12:12
JDBC(Java Database Connectivity)는 RDBMS에 접근하기 위한 프로그래밍 인터페이스입니다. JDBC의 실행은 대부분 SQL을 데이터베이스 서버에 전송하고 수행하는 것들인데요. 이번 글에서는 JDBC를 중심으로 아래와 관련된 사항들을 알아보겠습니다: JDBC 기초 JDBC 버젼 발전과정 JDBC 드라이버 타입 JDBC 기초 JDBC는 SQL 문장을 처리하는 엔진에 대한 Call-Level Interface(CLI)에 기반해 있습니다. 좀 더 구체적으로는, JDBC는 SQL92 언어 문법 스탠다드를 따르는 X/Open SQL CLI(X/Open은 국제 규격 조직)를 사용하는데요. 아래 이미지는 어떻게 SQL CLI와 JDBC가 내부적으로 동작하는지 보여줍니다: 위 이미지에서 JDBC..
-
Spring Framework란?Java 2021. 9. 10. 22:27
스프링은 2002년 릴리즈되어 JEE(Java Enterprise Edition) 서버를 대체하며 다양한 프로젝트가 추가되며 마이크로서비스, 애플리케이션 등을 만들기 위한 광범위한 기술로 자라났습니다 [1]. 이 글에서는 스프링에 대해 아래와 같은 점들을 알아보겠습니다: 스프링이란? IoC(Inversion of Control)와 DI(Dependency Injection) DI 외의 다양한 기능들 스프링 프레임워크의 진화 과정 스프링이란? 스프링은 보통 자바 애플리케이션 개발을 위한 경량 프레임워크라고 할수 있는데요. 이 부분에서 2가지 명확히해야할 부분은 아래와 같습니다. 첫 번째는 다른 프레임워크(Apache Struts 등)는 웹 애플리케이션에 제한되는 반면, 스프링은 어떠한 자바 애플리케이션 개..
-
서블릿의 세션 관리 (Servlet Session Management)Java 2021. 2. 21. 16:35
세션은 특정 시간의 구간을 의미하며, 세션 관리는 사용자의 상태를 유지하는 방법을 말합니다. 이러한 세션관리가 필요한 이유는 사용자에게 상태를 부여해야할 경우가 존재하기 때문입니다. 예로, 사용자 상태를 관리하여 매 페이지를 이동할 때마다 로그인을 요구하지 않고 세션을 통해 이미 로그인 한 사용자임을 입증할 수 있습니다. 그러나, HTTP 프로토콜은 그 자체로 stateless하기 때문에, HTTP 프로토콜 '바깥'에서 이러한 상태 관리를 담당하여야 합니다. 서블릿의 명세 상에서 이러한 세션 관리는 톰캣과 같은 서블릿 컨테이너가 담당합니다. '톰캣 내부구조'에서 살펴본 바와 같이, 세션은 주로 아래의 2가지 방법으로 관리됩니다: 브라우저 상의 쿠키를 통해서 URL Rewriting을 통해서 이번 글에서는..
-
아파치 톰캣 내부구조 (Apache Tomcat Internals)Java 2021. 2. 17. 18:53
컨텍스트를 이해하며 알아보는 Nginx 내부구조 아파치 톰캣 내부구조 (Apache Tomcat Internals) 아파치 톰캣은 Java Servlet, JavaServer Pages, Java Expression Language와 WebSocket 기술의 오픈소스 구현체로, Java 코드가 실행될 수 있는 "pure Java" HTTP Web server 환경을 kadensungbincho.tistory.com 아파치 톰캣은 Java Servlet, JavaServer Pages, Java Expression Language와 WebSocket 기술의 오픈소스 구현체로, Java 코드가 실행될 수 있는 "pure Java" HTTP Web server 환경을 제공합니다 [1]. 웹 서버 역할을 하는 ..