JPA 필요한 것만 조회하자

JPA 필요한 것만 조회하자JPA 는 편리하지만 편리함 뒤에 숨어있는 성능 손실 위험이 있다. 이건 JPA가 그 자체로 성능 상 불리하다는 얘기가 아니라, 편하게만 쓰다보면 잘못 쓰는 길로 빠져서 성능에 해를 끼칠 위험도 꽤 있다는 얘기다. 여러가지 원칙이 있겠지만, 이번에 기억해둬야 할 원칙은 JPA는 필요한 것만 조회하자 엔티티아래는 어떤 카테고리를 나
Continue reading

IDE 에서는 되는데 jar 에서는 안 돼요 - Java Resource

IDE 에서는 되는데 jar 에서는 안 돼요 - Java Resource 한 줄 요약: 웬만하면 getResource() 쓰지 말고 getResourceAsStream() 쓰자 기본 폴더 구조자바에서는 메이븐이 널리 사용되면서 아래와 같은 폴더 구조가 표준처럼 사용되고 있다. src/main/java 폴더 하위에 있는 java 파일은 빌드 후 targe
Continue reading

Java Memory Monitoring

Java 메모리 모니터링두서 없이 이것저것 모아본 자바 메모리 모니터링 Heap Dump 힙에 있는 모든 객체 Dumpjmap -dump:format=b,file=HEAP_DUMP_OUTPUT_FILE_NAME.hprof PID 힙에 있는 Live 객체만 Dumpjmap -dump:live,format=b,file=HEAP_DUMP_OUTPUT_FILE_N
Continue reading

Java Native Memory Tracking

Java Native Memory TrackingDMA자바에서도 DirectBuffer를 이용해서 JVM Heap이 아닌 Native 메모리를 사용하고 DMA(Direct Memory Access)의 장점을 활용할 수 있다. 구체적인 사용법 등 자세한 내용은 Java NIO Direct Buffer를 이용해서 대용량 파일 행 기준으로 쪼개기를 참고하고 장단
Continue reading

Spring Data에서 Batch Insert 최적화

Spring Data에서 Batch Insert 최적화Spring Data JPA가 안겨주는 편리함 뒤에는 가끔 성능 손실이 숨어있다. 이번에 알아볼 Batch Insert도 그런 예 중 하나다. 성능 손실 문제가 발생하는 이유와 2가지 해결 방법을 알아본다. 전체 코드는 https://github.com/HomoEfficio/micro-benchmark-
Continue reading

GET이냐 POST냐 그것이 문제로다

GET이냐 POST냐 그것이 문제로다며칠 전에 페이스북에 올렸던 질문에 여러분께서 시간 내서 좋은 의견 나눠주셔서, 나만 꿀꺽하고 넘어가면 도리가 아닌 것 같아 다시 정리해본다. 먼저 이 글은 나름의 결론이 있기는 하지만, 그것이 정답이라고 단정할 수는 없다.또한 REST와는 아무런 관계가 없으며, 오직 HTTP Method에 대한 얘기다. 문제보통 클라이
Continue reading

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

HomoEfficio


Seoul, Korea.