MySQL 아키텍처
카테고리 없음2024. 1. 4. 10:18MySQL 아키텍처

MySQL 서버 구조 MySQL 서버는 서버로부터 SQL 요청을 받고 해당 SQL을 처리하는 프로세스를 처리하기 위해 아래와 같은 순서로 디스크에 접근해서 요청을 처리한다. MySQL엔진에서 쿼리를 처리하고, 스토리지 엔진을 통해 데이터를 쓰거나 읽을 수 있다. MySQL 엔진 MySQL 엔진은 내부적으로 쿼리 파서, 전처리기, 옵티마이저, 쿼리 실행기를 가지고 있다. 쿼리 파서 SQL을 파싱하여 Syntax Tree를 만들고, 이 과정에서 문법 오류 검사를 수행한다. 전처리기 쿼리파서에서 만든 Tree를 바탕으로 전처리(preprocessing)를 수행한다. ex) 테이블이나 컬럼 존재 여부, 접근 권한 등의 오류 검사 쿼리파서와 전처리기는 컴파일 과정과 매우 유사하지만, SQL은 프로그래밍 언어처럼 ..

카테고리 없음2024. 1. 1. 15:50JPA Auditing 에러를 해결하며 공부해본 @WebMvcTest

문제 Controller에 대한 Test를 진행하기 위해 @WebMvcTest를 진행했다. @SpringBootTest는 모든 구성 요소를 로드해서 실제 실행과 같은 환경에서 테스트를 진행하기 때문에 매우 무겁다는 단점이 있어 Controller에 대한 테스트는 @WebMvcTest를 사용하는 것으로 알고있어서 선택한 것이었다. 하지만 @WebMvcTest가 어떻게 동작하는지에 대해 모르는 상태였고, 그에 따라 "jpa metamodel must not be empty!" 라는 에러 메세지를 만나게 되었고, 문제를 해결하면서 @WebMvcTest에 대해 공부해보았다. 원인 jpa metamodel must not be empty는 Auditing 관련 빈을 생성하지 않고 @EnableJpaAuditing..

카테고리 없음2023. 12. 31. 19:32[Spring] @DataJpaTest 사용 시 주의사항

문제 상황 H2 데이터베이스에 연결한 상태로 JPA에 대한 테스트 코드를 작성하는 도중 테이블이 정상적으로 생성되었음에도 아래와 같은 "테이블을 찾을 수 없다"는 에러 메세지를 보게되었고, 해당 문제를 해결하기 위해 @DataJpaTest에 대해 찾아보았다. could not prepare statement [Table "ARTICLE" not found (this database is empty); SQL statement: @DataJpaTest @DataJpaTest는 JPA에 대한 테스트 실행 시 테스트를 위한 내장 데이터베이스를 생성해서 실제 DB에 영향을 주지않고 테스트 할 수 있도록 환경을 제공해준다. @DataJpaTest의 동작 과정은 EntityScan을 통해 Entity들을 읽어 스키..

카테고리 없음2023. 12. 30. 15:37[Spring] JPA Auditing

JPA Auditing이란? 생성자, 수정자, 생성 시간, 수정 시간과 같은 메타 데이터를 자동으로 관리할 수 있는 JPA 라이브러리이다. Auditing 적용방법 @EnableJpaAuditing JPA Auditing 기능을 활성화하는 애노테이션으로 꼭 활성화를 시켜주어야 Auditing이 정상적으로 동작한다. * Config class에서 @EnableJpaAuditing을 넣어주어도 무방하다. @EnableJpaAuditing @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @EntityLis..

image