Taes-k DevLog
  • 몰라도 되는 스프링
  • Refactoring (2판)
  • Review
  • 요령과 기본(Spring)

MySql Explain (실행계획)

MySQL Explain Explain을 실행했을시 다음과같은 화면이 보여집니다. 각 칼럼이 의미하는 내용들을 확인해보도록 하겠습니다. id 쿼리에 포함된 각 select 문에 대한 순차 식별자 select 항목을 구분하는 번호 동일한 ID의 경우 위에서 아래로 진행됩니다. table 항목이 “derived2”인경우...

11 Nov 2019

Spring dbcp(Hikari pool) wait-timeout connection error

에러내용 com.zaxxer.hikari.pool.ProxyConnection : HikariPool-1 - Connection com.mysql.cj.jdbc.ConnectionImpl@25ec8a5c marked as broken because of SQLSTATE(08S01), ErrorCode(0) com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully received from the server was 3,752,361 milliseconds ago. The last packet sent successfully to the server...

08 Nov 2019

Spring Feign으로 http 통신하기

Feign Netflix 에서 개발한 선언적 http 통신을 위한 오픈소스 입니다. 선언적 통신을 통해 http 통신 코드를 확연하게 줄여줄수 있다는 장점이 있습니다. 현재는 Spring cloud 에서 공식 라이브러리로 지원하고 있습니다. netflix-feign의 last-update는 2016년 7월이며(v8.18), Spring cloud...

05 Nov 2019

spring boot 2.2.0 release

들어가기에 앞서 2.2.0.RELEASE 버전은 JNDI 설정에 문제가 있습니다. JNDI를 사용하고 있는 환경의 경우 DB 연결에 문제가있어 배포에 실패하는 현상이 있습니다. 2.2.1.RELEASE 버전에서 위의 문제가 해결되었습니다. Spring boot 2.2.0 realease 주요 업데이트 사항 정리 JMX now...

04 Nov 2019

다시세우는 테스트코드 작성 전략

개요 사실 해당내용에 대해서는 정확한 답변을 드리기가 어렵습니다. 사실 모든 개발내용에 대해 테스트를 진행 할 수 있다면 더할나위없이 좋지만, 그에대한 트레이드 오프는 분명하기때문에 실무에서는 모든 내용에대해 테스트를 진행한다는것은 쉬운일이 아닐것입니다. 그럼에도 불구하고 개발을 함에 있어서...

27 Sep 2019

java.util.date를 사용하지 말아야하는 이유

java.util.date 를 사용하지 말아야 하는 이유 time zone 이 없음 format이 없음 캘린더 시스템이 없음 1900년 후 몇년은 두자리수로 표현됨, 1900년 이전 처리와 함께 별도의 처리과정 사용됨 월의 비직관적인 표시 (0 - 1월, 11- 12월)...

25 Sep 2019

mysql count(*) vs count(column)

개요 SQL 에서 쿼리의 실행 결과 로우의 수를 조회하고자 할때 count()함수를 사용하게 됩니다. 이때, count(*)을 쓰는 경우와 count(column-name)을 사용하는 경우가 어떻게 다른지 확인해보도록 하겠습니다. count(*) vs count(name) 예시 테이블) id name 1 김하나 2 이둘...

10 Sep 2019

spring transaction propagation

Transaction propagation(전파) Transaction 사용시 트랜잭션이 겹치게될때 (트랜잭션 내에서 다른 트랜잭션 서비스를 호출시) 트랜잭션처리를 어떻게 해야하는지에 대해 각각의 트랜잭션마다 propagation(전파범위) 옵션을 설정하여 지정해줄수 있습니다. 종류 REQUIRED REQUIRES_NEW SUPPORTS NOTSUPPORTED MANDATORY NEVER NESTED propagation 설정 일반적으로 spring에서...

05 Sep 2019

DDD (Domain Driven Design) 도메인 주도 설계

도메인 모델 도메인 모델은 사용 관점에따라 헷갈릴수 있습니다. 도메인 모델이란 특정 문제와 관련된 모둔주제의 개념 모델로서, DB관점이 아닌 현실 세계에 빗대어 정의할수 있는 객체들간의 모델이라고 의미 할 수 있을것 같습니다. 도메인모델을 구성하기위해서는 핵심 구성요소들을 정의하고...

04 Sep 2019

spring annotation 트랜잭션 & programming 트랜잭션

선언적 트랜잭션 선언적 트랜잭션 이라함은 annotation을 이용한 트랜잭션으로, @Transactional을 사용한 트랜잭션을 의미합니다. @Transaction은 Sprign AOP를 통해 구현되어지는 방식으로 아래 어노테이션 선언을 하게되면 그림과같은 내부 로직이 구현됩니다. 특징 트랜잭션 로직과 비즈니스 로직을 분리하여 관리할수 있습니다. 유지보수가...

04 Sep 2019

VO, DTO, Entity vs Map

Spring을 사용하면서 많은분들이 헷갈려 하고 혼용되어 사용되기도 하는 용어인 VO, DTO, Entity에대해서 정리하고 이 Object들을 사용하는것과 Map을 사용하는것에대한 논쟁에대해서 알아보도록 하겠습니다. DTO(Data Transfer Object) 약자 그대로 해석을 하면 데이터를 개체로 변환한 것으로,데이터 교환을 위해 선언한...

02 Sep 2019

XA datasource, JTA

XA 2PC(2 phase commit) 분산 트랜잭션 처리를 위한 X-OPEN 표준이며 하나 이상의 데이터베이스간에 2PC 트랜잭션이 보자오디어야할때 XA Datasource가 사용됩니다. 글로벌 트랜잭션(분산 트랜잭션)을 적용하기위해서는 반드시 2PC를 해야하고 JTA를 사용할때 XA가 사용됩니다. JTA JTA (Java Transaction API)는...

29 Aug 2019

spring boot에서 다중 datasource 환경에서의 트랜잭션

datasource와 transaction 트랜잭션은 일반적으로 단일 datasource단위로 관리됩니다. 그렇다면 다중 datasource 환경에서는 transaction을 어떻게 구축할수 있는지 알아보도로고 하겠습니다. Transaction propagation 설정을 통한 환경 Datasource 마다 TransactionManager가 설정되어, 양측의 데이터소스 트랜잭션을 확실하게 체크 할 수 없습니다. Propagation을통해...

16 Aug 2019

Git-flow 적용하기

Git-flow Git flow란 이름에서 알수 있다시피, Git의 흐름을 관리하는 방법론입니다. 그렇다면 git의 흐름을 관리하게되면 어떤 좋은점이 있는지 알아보도록 하겠습니다. Git-flow 히스토리 다이어그램 깃 플로우를 적용하기위해서는 두가지의 필수 사항만 지켜주시면 쉽게 따라하실수 있습니다. 모든 작업내용은 하나의...

09 Aug 2019

Intellij Spring devtools 적용 이슈

Devtools 개요 기능 1. 템플릿(thymeleaf, freemaker … )에 대한 cache property default들을 자동 비활성화 처리 기능 2. Trigger 파일들에 대한 update 발생시 자동 시작 기능 3. 소스 변화시 application 이 브라우저 liveReload 발생 이슈 IntelliJ에서...

08 Aug 2019
Previous
Next
cobura12@gmail.com