IntelliJ에서 H2 연결하고 JPA Console 사용하기

IntelliJ에서 H2 연결하고 JPA Console 사용하기H2는 Web 콘솔도 지원해줘서 로컬 환경에서 웹을 통해 쉽게 데이터를 확인할 수 있다.IntelliJ Ultimate 버전에는 DB Client 도구가 포함돼있어서 로컬에서 H2 DB를 사용할 때 편리하게 사용할 수 있다.또한 JPA를 사용하는 경우 JPA Console을 사용할 수 있고, H
Continue reading

Java Optional 바르게 쓰기

Java Optional 바르게 쓰기Brian Goetz는 스택오버플로우에서 Optional을 만든 의도에 대해 다음과 같이 말했다. … it was not to be a general purpose Maybe type, as much as many people would have liked us to do so. Our intention was to p
Continue reading

Quartz 스케줄러 적용 아키텍처 개선 - 3

Quartz 스케줄러 적용 아키텍처 개선 - 31편에서는 Quartz 스케줄러 적용 시 변경 주기가 다른 스케줄러 모듈과 작업 클래스 모듈을 분리해서 클린 아키텍처에 다가가는 방법을 알아봤다. 2편에서는 Quartz 작업 클래스 모듈에 의존 관계를 주입하는 방법을 알아봤다. 이렇게 두 개의 고개를 성공적으로 넘었고 마지막으로 @Tranactional 고개가
Continue reading

Quartz 스케줄러 적용 아키텍처 개선 - 2

Quartz 스케줄러 적용 아키텍처 개선 - 21편에서는 Quartz 스케줄러 적용 시 변경 주기가 다른 스케줄러 모듈과 작업 클래스 모듈을 분리해서 클린 아키텍처에 다가가는 방법을 알아봤다. 분리된 작업 클래스 모듈은 DB 작업을 할 수도 있고, 하둡 인프라 관련 작업을 할 수도 있고, 알림 메일도 보내야하는 등 여러 작업을 할 수 있어야 한다. 그런데
Continue reading

Quartz 스케줄러 적용 아키텍처 개선 - 1

Quartz 스케줄러 적용 아키텍처 개선 - 1Quartz는 스프링에서도 지원하고 있어서 스프링 기반 프로젝트에도 쉽게 통합해서 사용할 수 있으므로 널리 사용되고 있다. 게다가 properties 파일 설정만으로 간단하게 클러스터를 구성해서 부하 분산 및 fail-over가 가능한 것도 장점이다. Quartz에 나오는 주요 등장 인물에 대한 설명이나 기본
Continue reading

객체 지향 프로그래밍과 메시징

객체 지향 프로그래밍과 메시징객체 지향 프로그래밍에서 메시징이란 무얼 말하는 걸까? 쉽게는 그냥 메서드 호출이라고 생각해도 될 것 같긴 하지만 그것만을 의미하는 것 같지는 않다. 그럼 도대체 뭘까? 원조에게 배우자. 앨런 케이Object-Oriented라는 말을 처음 사용한 것으로 알려진 사람은 앨런 케이다. 앨런 케이에게 OOP란?을 보면 끝부분에 다음과
Continue reading

재미로 보는 언어별 스트림 처리 비교

재미로 보는 언어별 스트림 처리 비교NBA를 즐겨보는데 갑자기 역대 MVP가 궁금해서 찾아보니 https://www.nba.com/history/awards/mvp 여기에서 볼 수 있었다. 연도별로 주욱 나열되어 있는데 수상횟수 기준으로 집계해서 내림차순으로 보고 싶었다. 그래서 연습도 할 겸 자바로 먼저 짜봤는데 다른 언어로 짜주신 분들도 계셔서 재미로
Continue reading

JPA 일대다 단방향 매핑 잘못 사용하면 벌어지는 일

JPA 일대다 단방향 매핑 잘못 사용하면 벌어지는 일Parent : Child = 1 : N 의 관계가 있으면 일대다 단방향으로 매핑하는 것보다 일대다 양방향으로 매핑하는 것이 좋다. 왜 그런지 구체적으로 살펴보자. 조인테이블 방식의 일대다 단방향 매핑그런데 어떤 특별한 이유가 있을 수도 있고, 그냥 별 생각없이 작성된 레거시 일 수도 있고, 아니면 JPA
Continue reading

Java NIO Direct Buffer를 이용해서 대용량 파일 행 기준으로 쪼개기

Java NIO Direct Buffer를 이용해서 대용량 파일 행 기준으로 쪼개기기가 단위의 파일을 외부에 전송할 일이 생겼다. 한 방에 보내기엔 너무 커서 파일을 쪼개서(split) 보내려고 하는데, 그마저도 쉽지 않다. 쪼개기 위해 대용량 파일을 읽을 때 이미 수십분 동안 CPU를 너무 잡아 먹어서 이 쪼개는 배치 작업을 스케줄링하는 스케줄러(Qua
Continue reading

Back to the Essence - Concurrency vs Parallelism

Back to the Essence - Concurrency vs Parallelism 동시성이 뭐냐?복수의 태스크를 동시에 실행하는 거 아니냐? 병렬성이 뭐냐?복수의 태스크를 동시에 실행하는 거 아니냐? 그럼 동시성과 병렬성이 뭐가 다른 거냐?… 비슷하지만 다른 개념이라는 건 알겠는데, 설명하라면 또 명확하게 답하기가 쉽지 않다. 명확하게 답하기 쉽지
Continue reading

HomoEfficio


Seoul, Korea.