java


  • 디버깅의 함정: 슈뢰딩거의 쿼리?

    레벨 2의 세 번째 미션. JPA가 도입되면서 이런저런 학습을 하던 중, 크루로부터 기이한 현상을 제보받았다. 연관관계 지연 로딩에서 일어나는 현상이었는데, 정확한 상황은 아래 코드를 확인해 보자. 책과 출판사를 표현하는 두 가지 엔티티 Book과 Publisher가 존재한다. @JdbcTest를 통해 트랜잭션을 설정하고, 내부에서 아래와 같은 테스트 코드를 작성해 보았다. 현재 entityManager를 통해 flush 연산만 진행했고, 영속성 컨텍스트를 비우지…


  • 추상화 수준을 활용해 좋은 코드 작성하기

    제목부터 어려운 단어가 등장했다. 추상화 수준. 개인적으로 abstract라는 영단어가 추상화라는 단어로 온전히 표현되지 않는 감이 있지만, 통상적으로 사용되므로 이 글에서도 추상화라고 다룬다. 이 글에서는 추상화 수준에 대해 알아보고, 어떻게 코드로 적용할 수 있을지 설명한다. Java는 추상화를 통해 발전해 왔다. 추상 클래스, 인터페이스, 레이어의 분리 모두 객체지향과 책임 분리에서 시작됐다. 각 객체의 공통된 특성을 뽑아 나타낸다.…


  • Garbage Collection in Java Hotspot VM

    C, C++와 같은 언어에서 동적 할당을 해 본 적 있는가? 동적으로 메모리를 사용할 때 반드시 지켜야 하는 사항, 배울 때 귀에 딱지가 얹도록 들었던 말이 바로 얻어온 메모리를 OS에 다시 돌려주는 것이다. 제때 반환하지 않으면 OS로부터 동적으로 할당받을 수 있는 메모리가 줄어들게 된다memory leak . 최악의 경우에는 OS가 더이상 메모리를 더이상 할당해주지 못해 프로그램이 뻗어버리는…


  • Java Virtual Machine: 가상화는 무엇일까

    JVM 문서를 읽으면서 정리하는 글. Virtual Machine이라는 단어가 조금은 생소할 지 몰라도, 글을 읽음으로써 개념을 이해하는 데에 목적을 둔다. Java 프로그램이 실행되는 가상 머신이라는 무대는 무엇일까? 왜 가상화를 해야 했을까? 라는 질문을 스스로 던지면서 읽으면 더 도움이 되겠다! Virtualization? 가상화란 무엇일까? 라고 생각해 보면, 존재하지 없는 무언가를 만들어내는 느낌이다. 실제로 하드웨어 플랫폼, OS 등을 가상으로…


Categories