2025/02 3

[SpringBoot] JPA, Hibernate, 그리고 Spring Data JPA 톺아보기

📍개요여러 프로젝트를 경험하면서 JPA로만 구현했었다. 구현하면서 듣는 말인 JPA와 Spring Data JPA의 차이점, 로그에는 뜨지만 무엇인지 정확히 모르는 Hibernate 등등.. 확실히 깊게 이해하고 있지는 않는 느낌이 들었다. 이번 기회에 Spring Boot에서 DB에 접근하기 위해 사용하는 JPA 기술을 톺아보려고 한다.   📍JPA란?JPA는 Java Persistence API의 약자로, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.여기서 중요히 봐야할 부분은 JPA는 인터페이스라는 것이다.스프링의 PSA에 의해서(POJO를 사용하면서 특정 기술을 사용하기 위해서)표준 인터페이스를 정해두었는데, 그중 orm을 사용하기 위해 만든 인터페이스가 바..

springboot 2025.02.19

[Java] 튜닝의 마지막 단계 GC 알아보기

📍GC(Garbage Collection)란?프로그램이 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 알아서 해제하는 것으로 GC는 메모리 관리 기법 중 하나다.여기서 동적으로 할당했던 메모리 영역은 프로그램 런타임에 사용되는 Heap 영역 메모리를 뜻하고,필요 없게 된 영역은 어떤 변수도 가리키지 않게 된 영역을 의미한다.C,C++의 경우 Heap 영역의 메모리를 관리하기 위해 코드 레벨에서 할당 받고, 해제해야 했다. (포인터)이렇게 수동으로 해제해야하는 경우 할당받은 메모리 영역을 제대로 해제하지 않아 memory leak이 발생하기도 한다.다행이 필자가 사용하는 Java나 Javascript 같은 언어에서는 동적 메모리 영역 해제를 GC가 대신 해준다.   📍GC가 왜 필요할까?또 어..

java 2025.02.05

[Java] Java 용어들을 알아보자. (JRE, JDK, JVM)

📍개요카카오 탐방 중 JVM과 GC와 같은 Java의 기본적인 원리가 무엇인지 설명할 수 있느냐는 질문에 말문이 막혔다.자바 파일을 운영체제 상관없이 사용하게 도와주는 프로그램이라는 것만 알고 그 이상 설명할 수 없었던 나 자신에게 충격받고, 기본적인 내용을 다시 한 번 정리해보려 한다.   📍JVM(java virtual machine)이 무엇일까?컴퓨터들은 모두 같은 기계어를 쓰는 게 아니다.C언어로 짜서 컴파일한 기계어인데 윈도우에서 돌아가게 컴파일한 것은 맥이나 리눅스에서는 안 도는 현상이 발생한다.그럼 어떻게 해야할까? 프로그램이 돌 환경을 생각해서 그 환경에 맞도록 기계어를 번역해줘야 한다. 그렇게 매우 번거롭다.이런 문제를 해결하기 위해 만들어진 게 자바의 JVM이다.쉽게 말하자면 각 종..

java 2025.02.01