백엔드 개발하며 작성한

    [ORM > JPA] 영속성 컨텍스트

    [ORM > JPA] 영속성 컨텍스트

    EntityManagerEntityManager는 Entity(객체와 테이블이 매칭되는 개념)를 관리하는 역할을 합니다.EntityManagerFactory가 요청이 올때마다 생성하는 비용이 매우 크기 때문에, 대신 생성비용이 거의 없는 EntityManager가 생성됩니다.public interface EntityManagerFactory { /** * Create a new application-managed EntityManager. * This method returns a new EntityManager instance each time * it is invoked. * The isOpen method will return true on the returned..

    Spring Boot에서 Connection Pool 이용하기 (HikariCP)

    Spring Boot와 MySQL을 연동한 상태에서 HikariCP 라이브러리를 이용해 Connection Pool을 직접 등록하고 이를 이용하여 쿼리문을 수행하는 실습을 진행하겠습니다.  의존하고 있는 라이브러리들은 아래와 같습니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.testng:testng:7.1.0' implementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testI..

    Connection Pool과 Hikari CP 설정 옵션

    Connection Pool과 Hikari CP 설정 옵션

    👋 등장 배경일반적인 데이터 연동과정은 웹 애플리케이션이 필요할 때마다 데이터베이스에 연결하여 작업하는 방식입니다.더보기일반적인 데이터베이스 연결 Life Cycle아래 단계만 봐도 데이터베이스 연결은 상당한 비용이 소모되는 작업임을 알 수 있습니다.데이터베이스 드라이버를 로드한 후 데이터베이스로의 연결 객체를 생성하여 open데이터 조회/생성을 위해 TCP Socket open소켓을 통해 데이터를 읽고 쓴다.연결 close소켓 close아래 내용은 INSERT문을 수행하는 과정에서 필요한 비용의 비율을 나타냅니다. (MySQL 8.0 기준) : 참고 링크Connecting: (3)Sending query to server: (2)Parsing query: (2)Inserting row: (1)Ins..

    익명 클래스(익명 객체)

    익명 클래스(익명 객체)

    이번 포스팅에서는 익명 클래스/객체에 대해 알아볼 것입니다. 목차는 아래와 같습니다. 목차 익명 클래스/객체의 정의와 사용하는 이유 익명 클래스/객체를 어떻게 사용하는가? 익명 클래스/객체를 사용하는 두가지 상황(Interface 구현, 추상 클래스 상속)과 주의 사항 일회성으로 사용되는 기능을 '일반클래스의 인스턴스로 생성한 것' => '익명 클래스/객체로 변환'하는 예제 익명 클래스/객체? 익명 클래스는 내부 클래스이자 이름이 없는 "익명" 클래스입니다. 즉, 이름이 없는 일회용 클래스로 클래스 정의와 인스턴스(객체) 생성을 동시에 할 수 있습니다. 익명 클래스(익명 객체)는 인터페이스를 구현하는 클래스 혹은 부모 클래스를 상속받는 클래스 중 일회성에 그치는 클래스를 이름이 없는 클래스로 생성하고 동..

    JVM(Java Virtual Machine)의 구조 - 메모리

    JVM(Java Virtual Machine)의 구조 - 메모리

    JVM은 클래스 로더 시스템, 메모리, 실행 엔진, 네이티브 메소드 인터페이스(JNI)+네이티브 메소드 라이브러리, 총 4개로 구성되어 있습니다. 한번에 다루기 많은 내용이라 나눠서 포스팅할 예정입니다. 메모리 (현재 포스팅) 클래스 로더 시스템과 실행 엔진 이번 포스팅은 '메모리'에 대해 다루겠습니다. Runtime Data 영역에는 메서드(Method 혹은 Class) 영역(Area), 스택(Stack) 영역, 힙(Heap) 영역, 네이티브 메서드(Native Method ) 스택 영역으로 구성됩니다. 1️⃣ 메서드(클래스) 영역 클래스가 메모리 상에 올라가는 영역입니다. JVM이 동작하고 클래스가 로드될 때 적재되서 프로그램이 종료될 때까지 저장됩니다. 구성 클래스 구조 FQCN(클래스 이름(풀패키..

    Stack과 Heap.. 그리고 Garbage Collection

    Stack과 Heap.. 그리고 Garbage Collection

    JVM의 구조는 클래스로더, 메모리 영역(Runtime Data Area), 실행 엔진, 가비지 컬렉션, 네이티브 메소드 인터페이스(JNI)+네이티브 메소드 라이브러리 로 구성되어있습니다. 그리고 Runtime Data Area 에는 Method Area, Heap, PC Registers, Stack, Native Method Stack 로 구성되어있습니다. (참고) 간단히, 스택과 힙 스택 컴파일 타임에 할당되는 메모리 영역입니다. 원시 타입의 데이터가 값과 함께 할당되고, Heap 영역에 생성된 Object 타입 데이터의 참조 변수(주소값)가 할당됩니다. 프로세스가 메모리에 로드 될 때 스택 사이즈가 고정되어 있어, 런타임 시에 스택 사이즈를 바꿀 수는 없습니다. 힙 런타임에 할당되는 메모리 영역입..