Spring Boot 2.x - > 3.x 업그레이드 시 겪었던 SQL 관련 문제
업무로 인해 Spring Boot 2.x에서 3.x로 업그레이드하면서 여러 문제를 겪었다. 그 중 첫 번째로 발생한 에러를 살펴보자. Caused by: java.sql.SQLSyntaxErrorException: (conn=3) You have an error in your SQL syntax; check the manual that corresp...
업무로 인해 Spring Boot 2.x에서 3.x로 업그레이드하면서 여러 문제를 겪었다. 그 중 첫 번째로 발생한 에러를 살펴보자. Caused by: java.sql.SQLSyntaxErrorException: (conn=3) You have an error in your SQL syntax; check the manual that corresp...
프로젝트를 새로 개발하거나 새로운 요구 사항을 처리할 때마다 느끼는 것은 ‘문서화의 중요성’이다. 그리고 주석은 코드에서 문서화의 중요한 도구로 활용될 수 있다. 각 회사의 컨벤션에 따라 다를 수 있지만, 일반적으로 사용되는 주석 작성 틀을 아래와 같이 정리해 보았다. 이 글은 ‘코드 작성 가이드’ 와 Spring Framework를 참고하여 두고...
1. 파싱을 시작하기 앞서 지금까지 과정으로 스캐너로 토큰도 분류했고 문법도 정리했다. 이제부터 파싱의 시간이 왔다. 개인적으로 이해와 습득을 위해 많은 시간을 들였던 구간이다. 이전 장의 컨택스트 자유 문법과 록스의 문법, 비지터 패턴을 배웠는데. 그래서 ‘이걸로 뭘 하라는거야?’ 라는 생각이 든다. 이번 글은 이것들의 사용 방법과 쓰임새를 이해하...
스캐너로 원시 코드를 토큰으로 만들었으면 이 토큰을 표현(representation)으로 만들 차례다. 코틀린은 var time = 10, 자바는 int num = 10; 처럼 말이다. 자바에서 num int = 10; 는 허용하지 않는 문법이다. 먼저 타입이 나오고 식별자, ‘=’, 값, ‘;’ 이 나와야 한다. 이처럼 각 언어는 자신만의 표현식이...
이번은 트랜잭션별로 영속성 컨택스트로 관리중인 엔티티들의 실제 쿼리가 어떻게 나가는지 확인해보는 시간을 가졌다. 1. 단순 Repository Save 쿼리 후 findById 사용시 쿼리 @DisplayName("Basic Insert Test") @Test void basicInsertTest() { Temp temp = Te...
이번은 로버트 나이스트롬의 인터프리터 록스의 구현의 첫 단계인 스캐닝(scanning)에 대한 글이다. 스캐닝은 컴파일러 또는 인터프리터가 소스 코드를 분석하는 첫 단계로,원시 소스 코드를 입력받아 토큰(token) 이라는 의미 있는 청크(Chunk)로 변환한다. 이 과정에서, 문자열은 렉심(lexeme) 이라고 하는 기본 단위로 나뉘며, 이들은 나...
이번 글은 서적을 참고하여 자바를 이용한 인터프리터 구현 및 정리이다. 언어의 구성 요소 프로그래밍 언어를 구현하는 과정은 복잡하지만, 몇 가지 기본적인 단계로 나눌 수 있다. 이 과정은 원시(raw) 소스 텍스트에서 시작하여, CPU가 이해할 수 있는 로우레벨 코드로 변환하는 것을 목표로 합니다. 아래는 자바 소스 코드의 간단한 예시이다 cla...
1. 레코드 락(Record Lock) 레코드 락(Record Lock)이란, InnoDB 스토리지 엔진 영역에서 적용되는 락이며 인덱스 레코드를 락을 거는 것을 의미한다. 인덱스 레코드를 락을 건다는 의미는 ‘인덱스를 통해서 접근하는 레코드’에 락을 건다는 뜻이다. 만약 인덱스가 없다면 InnoDB에서는 자동으로 6 byte 크기의 시스템 컬럼인 ...
회원 기능 챌린지에서 복잡하거나 조금 생각이 필요할 것 같은 부분만 골라서 설계를 진행해봤다. 이메일 인증 일반적으로 회원가입을 진행할 때, 이메일 인증을 했던 방식을 떠올리면 크게 두 가지였던 것 같다. 바로 코드 기반 인증과 링크 기반 인증이다. 코드를 입력받아서 인증하거나 링크를 클릭하는 것만으로 인증되는 차이인데. 설계를 한다면 어떻게 할 ...
회원 관리 Challenge 주 언어는 자바만 사용했었고 업무상 JS도 간간히 사용했었다. 최근 새로운 기술에 대해 궁금증이 생겨 코틀린, NestJS를 공부했었는데. 아직 찍먹 단계지만 얻은 부분이 많았다. 무엇보다 고착화되어 있는 뇌가 새로운 자극을 받아 활성화되는 느낌이 들어 좋았던 거 같다. 그래서 이번에는 챌린지라는 명목하에 각 언어들을 ...