[Spring Batch] CSV Item reader 구현하기

1. 들어가기에 앞서   현재 파트 내에서 Batch 관련 작업을 많이 하고 있습니다. SCDF 와 Confluent Kafka 로 전향하는 것을 다음 페이즈로 준비하고 있어, 현재 개발환경은 Spring Batch 프레임워크를 이용하고 있습니다. 따라서 한동안 Spring batch 를 사용하며 겪었던 내용들을 작성하고자 더보기…

[Java] 당신이 SimpleDateFormat 을 쓰지 말아야 할 이유

Why need to not use SimpleDateFormat? 들어가기에 앞서 제목이 좀 자극적이었나요? 전혀 자극적이지 않습니다. 엄밀하게는, production 에 SimpleDateFormat 을 쓰면 안되는 이유입니다. 더 엄밀하게는, multi-thread 환경에서 사용하면 안되는 이유입니다.   SimpleDateFormat 이란? Java7 에서 제공하는 (locale sensitive 한) SimpleDateFormat 클래스는 더보기…

[Chrome] 시스템의 hosts 정보를 변경했는데 즉각 반영되지 않을때

들어가기에 앞서 프론트엔드 개발자분들이 주로 겪을 법한 상황입니다.   /etc/hosts 혹은 drivers/etc/hosts 파일로 host 정보를 바꾸었는데, 크롬에서 아무리 새로고침해도 해당사항이 반영되지 않을 때의 조치사항입니다. 이럴 때 대부분 개발자 분들이 secret 창을 띄우거나 다른 브라우저를 사용하는데, context 를 유지해야하는 경우 해당 더보기…

[Spring] Excel Download 구현 – AbstractXlsxView 커스터마이징 하기

들어가기에 앞서 관리자 혹은 유지보수 툴에서는, 화면에 보여지는 데이터를 Excel 파일 형식으로 다운받을 일이 많다. 흔히 Excel Controller (API Gateway의 일종으로 이름은 그냥 관용적인 표현인 듯)에서 요청을 받으면, 주어진 조건에 맞는 데이터를 xlsx 파일로 만들어 응답해주는 형태로 구성된다. 현재 진행하는 더보기…

[JDBC] Datasource Proxy 에 대하여

JPA 구현체인 Hibernate 의 문제점 Java 의 ORM 인 JPA(Java Persistence API)와 그 구현체 중 하나인 Hibrernate 를 사용하다보면 몇 가지 불편사항이 생긴다. Native Query 를 사용하지 않으면 (JPA) 쿼리 실행 계획이 어떻게 되는지 알 수 없다 Hibernate debug log 를 더보기…

[MySQL] Transaction Isolation Level

들어가며 JPA로 비즈니스 로직을 작성하던 중, 동시성 문제를 해결하기 위해 Transaction Isolation 에 대해 좀 더 찾아보게 되었습니다. 다양한 DBMS가 있지만 접근하기 쉬운 MySQL의 Transaction Isolation Level 에 대해 정리하고, 이를 JPA 에서 어떻게 활용할 수 있는지 알아보겠습니다.   Transaction 더보기…

[VCS] Git Branching Strategy – Git flow

들어가기에 앞서 학생 시절 VCS에 무덤덤했고, 단순히 master 브랜치에서 반복되는 커밋으로 체계적이지 못한 버전관리를 하고 있었습니다. 어느 순간 현업에서 일을하며 자연스럽게 Git-flow를 적용하고 있었고, 오늘은 Git Branching Strategy 중 하나인 Git flow에 대해 나누고자 합니다. 조금 더 정확하게는, 개념과 workflow를 더보기…

[JPA] JPQL사용중 LAZY fetch 가 안될 때

발단 복잡한 관계 매핑이나 Native SQL에 가까운 쿼리를 유도해야할때에, JPA Repository 만으로 해결이 힘든 경우가 있다. (보통 가능은 하나, 코드가 지저분해진다) 위와 같은 상황에서 비즈니스 로직을 작성하던 중 있던 일이다.  ORM에서 1:M의 OneToMany 관계를 매핑할때는 보통 지연 가져오기를 Fetch 전략으로 더보기…