티스토리

찰리Zip
검색하기

블로그 홈

찰리Zip

charliezip.tistory.com/m

CharlieZip 님의 블로그입니다.

구독자
0
방명록 방문하기
반응형

주요 글 목록

  • [후기] AWS Industry Week 2023 방문기 어느날 우연히 이메일로 AWS Industry Week 2023이 개최된다는 소식을 접해들었고강연 목록을 보니 토스, 마켓컬리, 티빙 등등 이름을 들으면 모두가 알만한 기업들의 실제 클라우드 적용 사례를 들어볼 수 있을거 같았고무엇보다 단순히 신청만 하면 무료로 참가할 수 있어서 방문을 결심했다. AWS Industry Week 방문행사 장소인 코엑스 그랜드볼룸에 방문을 했습니다.코엑스 그랜드볼룸 위치가 생각보다 안쪽에 있어서 찾아가는데 약간 애를 먹었네요;; 행사장에 들어서면 세션을 듣는곳 말고도 각 산업별로 부스가 따로 마련이 되어 있었습니다.이번 행사의 경우 리테일, 통신 및 미디어, 금융 및 핀테크, 제조, 하이테크 총 5개의 분야에 대한 부스가 존재하였는데요부스에 방문하면 기업의 AWS 사용 사.. 공감수 0 댓글수 2 2023. 10. 23.
  • [Spring Batch] 스프링 배치 BatchStatus, ExitStatus 상태값 변화 과정 알아보기 스프링 배치를 개발하다보면 메타데이터 테이블을 다루게 되고 그중에 한 예로 BATCH_JOB_EXECUTION 테이블은 아래와 같이 구성되어 있습니다. 필드 중에 STATUS, EXIT_CODE 두개의 필드가 존재하는데요. (BATCH_STEP_EXECUTION 테이블에도 동일하게 두개의 필드가 존재합니다) STATUS와 EXIT_CODE가 배치 실행시 사용되는 값에 어떤 차이가 있는지에 대해 궁금증이 생겼습니다. 그래서 이번에는 STATUS, EXIT_CODE 두개의 필드에 대해 공부해보겠습니다. STATUS 란? STATUS는 배치의 실행 상태를 나타내는 값입니다. 주로 배치가 실행 중인지, 완료되었는지를 나타냅니다. 스프링 배치에서는 BatchStatus라는 열거형 클래스를 통해 값을 다루고 있는데.. 공감수 0 댓글수 0 2023. 9. 21.
  • [Spring Batch] 스프링 배치 메타 데이터 스프링 배치에서는 메타 데이터 테이블을 필수로 지정해 두었습니다. 그래서 스프링 배치를 실행할려면 메타 데이터 테이블을 생성해줘야 하는데요. 어떤 데이터들을 저장하길래 스프링 배치에서 필수로 지정하였을까요?? 스프링 배치의 메타 데이터에서는 아래와 같은 다양한 배치 어플리케이션의 정보를 얻을 수 있습니다. 이전에 실행한 Job이 무엇인지 최근 실패한 Job의 Batch Parameter가 무엇이었는지 실패한 Job을 다시 실행한다면 어디서 부터 시작하면 될지 만약 메타 데이터를 저장하고 있지 않다면 최근에 실행한 배치 Job이 어느지점에서 실패하였는지 알기가 어렵고 이러한 배치 정보를 얻기 위해 로깅 시스템을 개발자가 직접 구현해야 합니다. 배치의 주요 비즈니스 로직구현보다 부가적인 로깅작업구현에 더 많.. 공감수 0 댓글수 0 2023. 8. 10.
  • [서평] 만들면서 배우는 클린 아키텍처 최근에 읽은 책은 “만들면서 배우는 클린 아키텍처” 라는 책입니다. https://www.yes24.com/Product/Goods/105138479 만들면서 배우는 클린 아키텍처 - 예스24 우리 모두는 낮은 개발 비용으로 유연하고 적응이 쉬운 소프트웨어 아키텍처를 구축하고자 한다. 그러나 불합리한 기한과 쉬워보이는 지름길은 이러한 아키텍처를 구축하는 것을 매우 어렵게 www.yes24.com 다른 유명한 “클린 아키텍처”의 경우 책이 두꺼워서 선뜻 읽기가 겁이 나는데 해당 책은 대략 150페이지 정도의 분량으로 “클린 아키텍처”를 읽기 전 거쳐가는 단계로 가볍게 읽어보기 좋다고 생각하여 읽어 보았습니다. 서평은 개인적인 생각으로 작성하였으니 책을 구매하는데에 참고만 하시면 좋을것 같습니다. 책 서평 .. 공감수 0 댓글수 0 2023. 7. 25.
  • [Test] postman을 이용한 시나리오 테스트 하기 Test 코드 공부시리즈 마지막 글입니다. 이번에 공부해볼 것은 postman 을 이용해 시나리오테스트를 해보는 것입니다. 테스트 코드 공부 시리즈 1. AssertJ를 이용한 테스트 코드 작성 2. JUnit의 Parameterized 어노테이션 사용하기 3. Spring AutoConfigure Annotation Test 4. Mockito 톺아보기 5. kotlin에 특화된 mockito-kotlin 사용하기 6. postman을 이용한 시나리오 테스트 하기 내가 로그인 서비스를 하나 운영하고 있다고 가정해보겠습니다. 로그인 서비스에서 수정사항이 있거나 신규로 추가되는 기능이 있다면 작업을 진행하고 신규 버전을 새로 배포를 진행하게 됩니다. 배포를 진행하기 전에 테스트 코드도 작성하고 여러가지 검.. 공감수 0 댓글수 0 2023. 7. 12.
  • [Error] kotlin으로 mockito의 Argument matchers 사용시 NullPointerException 발생 문제 상황 문제상황을 재현하기 위해 먼저 Person 클래스를 하나 생성하겠습니다. class Person { fun isDeveloper(name: String, age: Int): Boolean { return true // 무조건 true를 반환 } } 만약 isDeveloper()의 파라미터를 Stub할때 동적인 값을 허용할려면 아래과 같이 사용할 것입니다. val mock = mock(Person::class.java) `when`(mock.isDeveloper(anyString(), anyInt())).thenReturn(true) 여기서 추가로 name은 "charlie"이지만 age값은 동적으로 받고 싶은 경우에 문제가 발생합니다. // NullPointerException 발생 `when.. 공감수 0 댓글수 0 2023. 7. 5.
  • [Test] kotlin에 특화된 mockito-kotlin 사용하기 mockito-kotlin https://github.com/mockito/mockito-kotlin GitHub - mockito/mockito-kotlin: Using Mockito with Kotlin Using Mockito with Kotlin. Contribute to mockito/mockito-kotlin development by creating an account on GitHub. github.com mockito-kotlin란 kotlin언어로 mockito를 사용하기 쉽게 헬퍼 함수(helper function)을 제공해주는 라이브러리 입니다. 기존 mockito가 Java언어를 타겟으로 만들어졌기 때문에 kotlin언어의 특성을 십분 활용할 수 없는데 mockito-kotlin .. 공감수 0 댓글수 0 2023. 7. 1.
  • [Error] findByIdOrNull 사용시 WrongTypeOfReturnValue 에러 발생 문제 상황 mockito-kotlin을 이용해 findByIdOrNull() 메서드를 모킹해서 테스트 코드를 작성중이었다. @Test fun `쿠폰 한건 조회`() { whenever(mockCouponRepository.findByIdOrNull(1L)).thenReturn( Coupon(id = 1L, type = CouponType.PERCENT, amount = 10, startAt = LocalDate.of(2023, 4, 12), endAt = LocalDate.of(2023, 4, 12)) ) val result = couponService.getOne(1L) assertThat(result.type).isEqualTo(CouponType.PERCENT) assertThat(result.am.. 공감수 0 댓글수 0 2023. 6. 22.
  • [Test] Mockito 톺아보기 w.kotlin 테스트 공부를 위한 4번째 글입니다. 이번에 공부해볼 주제는 Mockito 도구입니다. Mockito는 테스트를 편리하게 도와주는 도구로 Mock(가짜)객체를 쉽게 만들고 관리할 수 있게 도와주는 프레임워크로 설명이 필요없을 정도로 정말 많이 사용하는 프레임워크입니다. 이번에 저는 kotlin 언어를 이용해서 Mockito를 공부해 보겠습니다. 테스트 코드 공부 시리즈 1. AssertJ를 이용한 테스트 코드 작성 2. JUnit의 Parameterized 어노테이션 사용하기 3. Spring AutoConfigure Annotation Test 4. Mockito 톺아보기 5. kotlin에 특화된 mockito-kotlin 사용하기 6. postman을 이용한 시나리오 테스트 하기 Mock Mock .. 공감수 0 댓글수 0 2023. 6. 13.
  • [Test] Spring AutoConfigure Annotation Test 테스트 공부를 위한 3번째 글인데요. 이번에는 Spring에서 테스트를 좀 더 쉽게 하도록 지원해주는 어노테이션의 종류를 알아보고 각각의 특성을 간략하게 살펴보겠습니다. 어노테이션에 대한 자세한 사용법이 아닌 종류와 특성을 살펴보고 추후에 테스트를 작성시 필요한 어노테이션을 적절하게 사용하기 위한 정리라고 생각해주시면 좋을거 같습니다 테스트 코드 공부 시리즈 1. AssertJ를 이용한 테스트 코드 작성 2. JUnit의 Parameterized 어노테이션 사용하기 3. Spring AutoConfigure Annotation Test 4. Mockito 톺아보기 w.kotlin 5. kotlin에 특화된 mockito-kotlin 사용하기 6. postman을 이용한 시나리오 테스트 하기 @Spring.. 공감수 0 댓글수 0 2023. 5. 29.
  • [Test] JUnit의 Parameterized 어노테이션 사용하기 이번 시간에는 JUnit5에서 제공하는 Parameterized 어노테이션에 대해 공부해보겠습니다. 테스트 코드 공부 시리즈 1. AssertJ를 이용한 테스트 코드 작성 2. JUnit의 Parameterized 어노테이션 사용하기 3. Spring AutoConfigure Annotation Test 4. Mockito 톺아보기 w.kotlin 5. kotlin에 특화된 mockito-kotlin 사용하기 6. postman을 이용한 시나리오 테스트 하기 Parameterized란? 매개 변수화 된 테스트를 통해 각각 다른 인수로 여러 번 테스트를 실행할 수 있게 도와주는 어노테이션입니다. 간단한 예시를 하나 먼저 보겠습니다. @ParameterizedTest @ValueSource(strings =.. 공감수 0 댓글수 2 2023. 5. 22.
  • [Test] AssertJ를 이용한 테스트 코드 작성(w. kotlin) 테스트 코드 작성을 위한 기술 공부의 필요성을 느껴 관련 내용을 시리즈로 정리해 볼려고 합니다. 이번 글은 그 처음 시작인 AssertJ에 관한 글로 시작하겠습니다. 테스트 코드 공부 시리즈 1. AssertJ를 이용한 테스트 코드 작성 2. JUnit의 Parameterized 어노테이션 사용하기 3. Spring에서 지원하는 AutoConfigure Annotation 알아보기 4. Mockito 톺아보기 w.kotlin 5. kotlin에 특화된 mockito-kotlin 사용하기 6. postman을 이용한 시나리오 테스트 하기 AssertJ 값 비교 AssertJ에서는 값 비교를 할때 대부분 isEqualTo() 를 사용한다. @Test fun `동일성 isEqualTo 비교`(){ val st.. 공감수 0 댓글수 0 2023. 5. 15.
  • GSLB(Global Server Load Balancing)란? GSLB란? GSLB는 일반적으로 데이터센터 장애 조치(데이터 센터의 가용성 확보)를 제공하거나 가장 가까운 센터로 사용자를 안내하여 최종 사용자 성능을 향상시키는데 사용되는 기술이다. 일반적인 로드밸런싱과는 차이가 있고 DNS의 업그레이드 형태라고 볼 수 있다. 그러면 GSLB의 특징이 무엇이고 DNS에 비해서 어떤 부분이 업그레이드 됐는지 알아보자. GSLB 특징 인프라 아키텍처 GSLB의 특성에 대해 알아보기 위해 간단한 인프라 구조를 가정해보았다. 물론 GSLB를 사용하는 실제 운영하는 서비스는 훨씬 복잡할테지만 쉬운 이해를 위해 다른 부분은 최대한 생략하고 GSLB에 집중하여 인프라를 가정해보았다. 인프라 구성 환경 총 4대의 서버 서버는 서울, 부산에 각각 2개씩 존재 GSLB를 통해 서울, .. 공감수 3 댓글수 0 2023. 5. 9.
  • [Spring] Spring Data JPA Multi Custom DataSource 설정(w.kotlin) 이번에는 두개의 데이터베이스를 사용할때 DataSource를 설정하는 방법을 알아보겠습니다. 하나의 DB에 대한 설정이 필요하신 경우 이글을 읽어보시면 도움을 받으실 수 있습니다. 1. 환경설정 build.gradle.kts // Spring Data JPA 스타터 추가 implementation("org.springframework.boot:spring-boot-starter-data-jpa") // MySQL Connector 추가 runtimeOnly("mysql:mysql-connector-java:8.0.22") 2. DB 프로퍼티 설정 2개 이상의 데이터베이스를 사용할 경우에는 프로퍼티 설정도 각각 설정해주어야 합니다. spring: datasource-Memo: driver-class-nam.. 공감수 2 댓글수 0 2023. 5. 4.
  • [Spring] Spring Data JPA Custom datasource 설정(w.kotlin) Spring Data JPA를 통해 MySQL DB 연결을 설정하는 방법에 대해 정리하는 글입니다. 1. 환경설정 build.gradle.kts // Spring Data JPA 스타터 추가 implementation("org.springframework.boot:spring-boot-starter-data-jpa") // MySQL Connector 추가 runtimeOnly("mysql:mysql-connector-java:8.0.22") 연결할 DB가 MySQL이 아니라면 연결할 DB에 해당하는 Connector를 추가해주면 됩니다. 2. DB 프로퍼티 설정 application.yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver.. 공감수 0 댓글수 0 2023. 5. 1.
  • [Error] kotlin으로 mockito의 Argument matchers 사용시 NullPointerException 발생 문제 상황 먼저 저의 상황은 코틀린(kotlin) 언어로 mockito를 사용하는 환경에서 발생하였습니다. 코틀린언어가 아닌 다른 언어를 사용하셨다면 저의 케이스와 다른 경우일 확률이 높습니다. mockito의 Argument matchers의 eq() 메서드를 사용시에 문제가 발생하였다. 문제 상황을 가정하기 위해 먼저 Person 클래스를 하나 생성하자 class Person { fun isDeveloper(name: String, age: Int): Boolean { return true } } Argument matchers를 이용해 name이 "charlie"이고 age는 any()로 스텁(stub) 진행 하였다. // NullPointerException 발생 `when`(mock.isDeve.. 공감수 0 댓글수 0 2023. 4. 27.
  • [Kotlin] Collection Sequence vs Iterable의 차이 Sequence Sequence란 Kotlin에서 제공하는 기본 Collection으로 Java의 Stream에 대응되는 기능입니다. Sequence는 Iterable과 같은 기능을 제공하고 있지만 복잡한 연산이나 많은 단계의 연산을 수행할때 좀 더 향상된 성능을 제공해줍니다. Sequence vs Iterable 연산 처리 방식 Sequence는 하나의 요소마다 지정한 연산을 모두 적용 Iterable은 요소 전체에 지정한 연산을 모두 적용 Sequence는 연산에 대해 Lazy Evaluation(지연 계산)으로 처리하지만 Iterable은 Eager Evaluation(즉시 계산)으로 처리합니다. Lazy Evaluation (지연 계산) Lazy Evaluation(지연 계산) 이란 결과가 필요한.. 공감수 0 댓글수 0 2023. 4. 24.
  • [Kotlin] 트레일링 컴마(Trailing comma) 회사에서 개발을 하던 중에 문득 컴마(,) 가 눈에 들어왔는데 눈에 들어온 이유는 아래와 같이 사용이 되고 있어서였다. class StudentService( private studentRepository: StudentRepository, ) --- data class StudentDto( val name: String, val age: Int, ) 이렇게 보면 뭐가 이상하지??🤔 싶을수도 있다. 자세히 보면 StudentDto의 val age:Int 부분 마지막에 컴마(,) 가 붙어 있는것을 볼 수 있다. 가장 처음 든 생각은 이건 컴파일 에러아닌가?? 왜 인텔리제이가 오류로 잡아 내지 않을까 하는 의문이었다. 알고보니 코틀린 1.4 버전 이상부터는 컴마(,) 를 마지막 아규먼트, 마지막 파라미터, .. 공감수 0 댓글수 0 2023. 4. 21.
  • [Kotlin] 코틀린(Kotlin)다운 람다 사용 코틀린(Kotlin) 답지 않은 문법 사용 팀원분에게 코드리뷰를 받으면서 내 코드가 코틀린(Kotlin)스럽지 않은 부분이 있다고 깨달은 부분이 있다. 일단 기존의 코드를 먼저 보자. fun findAll(): List { val couponList = couponRepository.findAll() return couponList.stream() .map { CouponDto.fromEntity(it) } .collect(Collectors.toList()) } 위 코드의 return 부분을 살펴보자. 아마 바로 이상함을 느꼈을 수도 있고 아무런 이상함을 느끼지 못하셨을 수도 있다. 나는 별다른 이상함을 느끼지 못하고 사용하고 있던 코드였다. 그런 어떤 부분이 코틀린스럽지 못한 부분이었을까?? 바로 s.. 공감수 2 댓글수 0 2023. 4. 17.
  • [Intellij] Multiple Selector 단축키(같은 단어 일괄 선택) 인텔리제이에서 코드를 작성하다보면 같은 단어를 한번에 수정하게 되는 경우가 종종있습니다. 이럴때 유용하게 사용할 수 있는 단축키를 소개합니다. 1. 같은 단어 일괄 선택 (Multiple selection) 단축키 : ⌘⇧G (Command + Control + G) 실행 순서 변경하고 싶은 단어에 커서를 이동시킨다 ⌘ ⇧ G 단축키를 누른다 변경하고 싶은 단어를 입력한다 단어 변경이 완료되면 esc를 누른다. 2. 같은 단어 연속적으로 선택 (Consecutive Multiple selection) 단축키 : ⌘G (Command + G) 실행 순서 변경하고 싶은 단어에 커서를 이동시킨다 ⌘ G 를 통해 변경할 단어들을 선택한다. 변경하고 싶은 단어를 입력한다. 단어 변경이 완료되면 esc를 누른다. .. 공감수 0 댓글수 0 2023. 4. 12.
  • [Kotlin] var vs val, immutable vs mutable 차이 가변성과 읽기 전용 프로퍼티 코틀린을 처음 공부하다보니 가변성, 읽기 전용 프로퍼티라는 키워드를 많이 보게되는데 계속 보다보니 점점 더 헷갈려서 한번 정리를 해보려고 합니다. 이번 글에서 정리할 내용은 크게 3가지입니다. 1. 읽기 전용 프로퍼티(val) vs 가변 프로퍼티(var) 2. 읽기 전용 컬렉션(List) vs 가변 컬렉션(MutableList) 3. 1번 2번을 같이 사용할 때 읽기 전용 프로퍼티(val) vs 가변 프로퍼티(var) 코틀린을 조금이라도 사용해보았다면 val, var을 사용해 보았을 거다. val, var의 간단한 특징은 아래와 같다. val: 읽기 전용 프로퍼티, 값을 할당하면 변경이 불가능하다, 값(Value)의 약자 var: 가변 프로퍼티, 값을 할당한 후에도 변경이 가.. 공감수 1 댓글수 2 2023. 4. 9.
  • [Tip] Kotlin을 Java로 Decompile하기 해당 글은 Intellij 에서 Kotlin을 Java 언어로 간단하게 Decompile 하는 방법을 설명하는 글 입니다. 이 글 추천 대상 해당 글은 Java에서 Kotlin으로 넘어간 경우에 추천드립니다. 저의 경우 Java언어를 조금 사용하다가 Kotlin으로 넘어간 케이스입니다. 저와 같은 케이스의 경우에 초반에는 Java언어가 좀 더 익숙하기 때문에 Kotlin언어를 공부하실때 Java언어로 변환해보면서 공부를 하시면 많은 도움을 받을 수 있을것 같아요. 때로는 길고 자세한 설명 글보다 한 줄의 코드가 이해가 쉽고 도움이 되는 경우도 있으니까요. Kotlin → Java 변환 변환 방법 Tool → Kotlin → Show Kotlin Bytecode → Decompile 먼저 변환이 잘 되는지.. 공감수 0 댓글수 0 2023. 4. 5.
  • [Spring Security] SpringSecurity 인증 후 로그인 객체 정보 가져오기 개발을 하다 보니 Security 인증 후에 로그인 한 객체의 정보가 필요한 경우가 발생했습니다. SpringBoot에서 Security 인증 후에 로그인 한 객체의 정보를 가져오고 싶다면 어떻게 해야 할까요?? 1. SecurityContextHolder 로 직접 가져오기 인증 후 로그인한 객체의 정보를 가져오기 위해서는 객체의 정보가 어디에 저장되는지를 알아야 한다. 아래 그림을 보면 Security의 객체 정보는 SecurityContextHolder 내부에 들어 있다. 그러면 SecurityContextHolder 구조를 한번 살펴보자. SecurityContextHolder 는 시큐리티가 인증한 내용들을 가지고 있으며, SecurityContext 를 포함하고 있고 SecurityContext를.. 공감수 0 댓글수 0 2023. 4. 3.
  • [DB] 데이터베이스 Redo와 Undo 트랜잭션 특성 ACID A(Atomicity) 원자성 DBMS는 수행 중인 트랜잭션에서 데이터를 일부만 변경하고 나머지는 수행하지 않은 채 커밋 할 수 없습니다. C(Consistency) 일관성 트랜잭션에 의해 데이터 간의 일관성이 어긋나서는 안된다. I(Isolation) 고립성 트랜잭션끼리는 고립되고 독립되어 있다 D(Durability) 지속성 커밋한 트랜잭션은 장애가 발생하더라도 데이터는 반드시 복구되어야 한다 데이터베이스의 중요한 특징인 커밋한 데이터를 지키는 특성을 구현하기 위해서는 로그(변경 로그)를 채용하여 성능과 지속성을 양립시킵니다. REDO로그에 데이터를 한꺼번에 기록하는 것으로 I/O의 횟수가 줄어들고, 시퀀셜 액세스를 사용하여 I/O에 소모되는 시간을 줄였기 때문입니다. 또한 I.. 공감수 1 댓글수 0 2023. 3. 26.
  • [DB] 데이터베이스의 대기와 Lock 이 글은 오라클을 기준으로 설명된 글입니다. Lock이란? 먼저 오라클에 왜 Lock이 필요한지 예를 한번 들어보겠습니다. 만약 고객이 창고에 ID=1인 물건의 내용에 숫자 1을 더하고 싶다고 요청했습니다. 요청을 처리하기 위해 SQL문은 아래와 같습니다. SELECT counter FROM counter_table WHERE id = 1; UPDATE counter_table SET counter = WHERE id = 1; 하나의 요청만을 보니 아무런 문제가 없을것 같아보입니다. 하지만 오라클은 병렬처리가 가능하다는 특징이 있습니다. 만약 A라는 고객이 ID=1 인 물건에 숫자 1을 더하고 싶다고 요청을 해서 SQL을 처리하고 있는 중에 B라는 고객이 ID=1인 물건에 숫자 1을 더하고 싶다고 요청을.. 공감수 1 댓글수 0 2022. 3. 10.
  • [DB] 데이터베이스 실행계획 및 공유 풀 SQL문 분석 일반적인 프로그래밍 언어와 SQL의 차이는 무엇일까요?? 여러가지가 있을 수 있지만 SQL은 처리 방법(절차)을 기술하지 않는다는 점이 가장 큰 차이라고 말할 수 있습니다. 예를들어 프로그래밍할 때는 '여기에서 데이터를 꺼내 와서 반복문을 수행하고 조건문을 사용해 분기를 시킨다'와 같이 처리 방법을 기술했을 겁니다. 이에 비해 SQL문에서는 'SELECT A FROM B WHERE C=1'과 같이 테이블 B에서 C=1이라는 조건을 만족하는 데이터에서 A라고하는 속성의 정보를 꺼내오라고만 하지 어디에도 '인덱스를 사용해라', '풀 스캔을 하라' 와 같은 처리 방법을 기술하지는 않습니다. 그러면 SQL은 어떻게 우리가 원하는 데이터를 가져올까요?? RDBMS는 옵티마이저(파서,parse)라고 .. 공감수 0 댓글수 2 2022. 1. 23.
  • [Error] @DataJpaTest DataSource 설정 오류 Error 상황 프로젝트 환경 설정 application.yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/awss3?serverTimezone=UTC&characterEncoding=UTF-8 username: root password: 1234 jpa: database-platform: org.hibernate.dialect.MySQL5InnoDBDialect open-in-view: false show-sql: true hibernate: format_sql: true ddl-auto: create JPA관련 테스트를 하기 위해 @DataJpaTest를 이용해서 테스트를.. 공감수 24 댓글수 8 2021. 12. 19.
  • [DB] 데이터베이스 캐시와 공유메모리 캐시란? 데이터베이스는 SQL문을 빠르게 처리하기 위한 많은 방법을 사용합니다. 그중에서도 데이터베이스의 처리속도에 가장 큰 영향을 미치는 것은 디스크 I/O 동작입니다.그래서 데이터베이스는 캐시라고 불리는 기술을 사용해 가능한 디스크에서 처리하지 않고, 메모리에서 처리하는 구조를 갖고 있습니다. 빈번하게 사용하는 데이터를 매번 디스크에서 꺼내오지 않고 캐시라고 불리는 메모리에 두고 꺼내오므로써 디스크 I/O동작을 생략해 처리속도를 올리는 것입니다. 오라클에서의 데이터 캐시는 '버퍼 캐시'라고 불립니다. 오라클에서 버퍼 캐시의 존재 유무에 따라 동작이 어떻게 다른지 한번 살펴보겠습니다. 클라이언트가 데이터1을 요청합니다. 요청한 데이터가 버퍼 캐시에 놓여 있는지 확인합니다. 버퍼 캐시에 요청한 데이터가 .. 공감수 1 댓글수 0 2021. 12. 10.
  • [DB] 데이터베이스 디스크와 프로세스 DBMS DBMS를 이해하기 위해 3가지 키워드를 소개하겠습니다. 키워드 병렬 처리를 가능케 하고 높은 처리량을 실현한다. 응답 시간(response time)을 중시한다. 커밋(commit)한 데이터는 지킨다. 오라클을 포함한 모든 DBMS(Database Management System)은 매우 복잡한 구조로 되어있습니다. DBMS가 복잡해지는 이유는 위에서 이야기한 3가지의 특성을 모두충족시켜야 하기 때문입니다. 세가지 특성은 상반된 성향이 있어서 동시에 모두 만족시키기가 매우 어렵습니다. 예를 들어, '커밋(commit)한 데이터를 지킨다'를 만족하기 위해 커밋하는 순간 데이터를 디스크에 기록하고 싶지만, 그렇게 하면 응답 시간이 나빠지게 됩니다. 오라클을 기준으로 이러한 특성을 어떻게 반영하고 .. 공감수 0 댓글수 0 2021. 12. 2.
  • [프로젝트] charlieZip #5 - bindingResult 메시지 Json 전송 문제 기존에 프로젝트를 진행할때 클라이언트로 부터 오는 요청데이터를 Bean Validation한후 Error가 있다면 bindingResult에 에러 내용을 담아 다시 넘겨주었습니다. 그런데 댓글 작성을 구현할때 요청데이터를 validation(유효성 검사)를 한뒤 bindingResult에 에러내용을 담아 Json응답으로 반환하니 에러메시지가 의도와 다르게 전달되는것을 확인할 수 있었습니다. 댓글 작성 소스 ReplyRequest 요청 DTO @Getter @Setter public class ReplyRequest { @NotNull private Long bno; @NotEmpty @Length(min = 4) private String comment_content; } error.properti.. 공감수 2 댓글수 0 2021. 11. 21.
    반응형
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.