Yun Blog

기술 블로그

Spring Immutable으로 Properties 설정하기

해당 코드는 Github에 공개되어 있습니다. Spring Boot 2.2 버전에서부터는 Immutable으로 Properties 설정을 할 수 있습니다. 커스텀 하게 설정한 값들은 Properties 객체로 관리하는 것이 좋습니다. 해당 내용은 Properties 설정값 가져오기를 참조하시면 됩니다. 기존 Properties의 단점은 Mutable이......

Junit5 with Spring boot

해당 코드는 Github를 확인해주세요. Spring boot 2.2 버전부터는 Junit5 디펜던시를 기본으로 포함하고 있습니다. Junit5 주요 테스트 어노테이션과 Spring boot에서 활용법을 정리해보았습니다. @ValueSource @ValueSource어노테이션을 사용하면 배열을 값을 테스트 메서드로 손쉽게 전달할 수 있습니다. 12......

JPA N+1 발생원인과 해결방법

해당 코드는 Github를 확인할 수 있습니다. JPA를 사용하다면 보면 N+1문제를 많이 만나게 됩니다. 그에 따른 발생 원인과 해결법을 정리해보았습니다 ERD 12345678910111213141516171819@Entity@Table(name = "member")class Member private constructor() { ......

IntelliJ Execute Gradle task로 Gradle를 쉽게 사용하자

IntellIj를 이용하면 Gradle Task의 명령어 assistant 해주는 기능을 통해서 보다 쉽게 Gradle을 사용할 수 있습니다. 설정 방법 Find Action에서 Execute Gradle Task을 열어 볼 수 있습니다. 단축키를 지정해서 사용하는 것을 권장드립니다. Keymap -> Execute Gradle Task -&......

Mysql Explain

해당 글은 MySQL 5.7 완벽 분석을 정리한 내용입니다. MySQL 옵티마이저 구조 MySQL 옵티마이저는 비용 기반으로 어떤 실행 계획으로 쿼리를 실행했을 때 비용이 얼마나 발생하는지를 계산해하여 비용이 가장 적은 것을 택하게 됩니다. 어디까지나 추정 값이므로 정확한 비용은 실행 전까지 정확하게는 알 수 없습니다. EXPLAIN EXPLAI......

ConstraintValidator을 이용해서 효과적인 검증

코드는 Github에 공개 되어있습니다. 스프링에서는 JSR 303 기반 어노테이션 기반으로 일관성 있는 Validation을 진행할 수 있습니다. 하지만 @NotNull, @NotEmpty, @Email과 같은 검증은 가능하지만 비즈니스적에 맞는 Validation은 별도로 진행해야 합니다. 예를 들어 주문에 대한 결제 정보를 받는 경우 카드 결......

Utterances 적용하기

Utterances 소개 Utterances는 GitHub Issue 기반으로 Comment를 작성할 수 있게 해줍니다. Utterances의 장점 GitHub Issue 기반이기 때문에 블로그 플랫폼을 이전해도 기존 Comment을 그대로 가져갈 수 있음 개발 블로그 라면 Github 계정으로 댓글을 작성할 수 있기 때문에 사용성이 용이함 뭔가 있......

생산성 향상 - 비기는 없다

들어가기 앞서 생산성에 대해서 더 정확히는 생산성을 위해서 많은 것들을 도입하는데 왜 다 실패하는 것인지에 대해서 이야기해보고 싶다. 나는 2016.05 년부터 사회에 나와서 이제 3년 2개월 정도 프로그래밍 경험이 있다. 이런 짧은 경험으로 생산성과 프로세스에 대해서 논하는 게 조금은 부끄럽지만 내 생각을 한번 글로 정리해보고 싶어 이렇게 포스팅을 ......

테스트 코드 작성에 대한 나름의 고찰

해당 코드는 Github를 확인해주세요. 스프링 기반으로 많은 테스트 코드를 작성하면서 느꼈던 나름의 고찰과 어려움을 정리하는 포스팅입니다. 사실은 테스트 코드 작성 시 효율적인 방법을 소개하는 포스팅을 진행하려 했으나 이런저런 고민들 때문에 명확한 결론이 나지 않아서 이런 고민들을 정리한 포스팅입니다. POJO 테스트는 언제나 옳다 이전에 포스팅......

JPA Fetch Join 적용시 limit 동작하지 않는 이슈

JPA-Tip

결론부터 말씀드리면 Pagealge + Fetct Join을 이용해서 페이징 처리 시 특정 조건의 경우 limit이 발생하지 않아 테이블 FULL Scan 진행해서 애플리케이션 단에서 limit을 조정하는 경우가 있습니다. 성능에 막대한 영향을 주기 때문에 조심해야 합니다. 조건 주문 1 : 제품 N OneToMany 관계에 대해서 Pageagle ......