백엔드/Java9 JPA의 fetch 전략 JPA (Java Persistence API)의 fetch 전략은 데이터를 로드하는 방식을 결정하는 중요한 부분입니다. 이는 성능과 애플리케이션 로직의 효율성에 큰 영향을 미칩니다. JPA에서 제공하는 두 가지 주요 fetch 전략은 Eager Fetching과 Lazy Fetching입니다. Eager Fetching 정의: Eager Fetching은 연관된 엔티티를 즉시 로드하는 방식입니다. 즉, 부모 엔티티를 로드할 때 모든 연관된 자식 엔티티도 함께 로드됩니다. 사용 상황: 주로 연관된 엔티티가 항상 필요할 때 사용합니다. 예를 들어, 사용자 정보와 그 사용자의 프로필 정보가 거의 항상 함께 필요한 경우에 적합합니다. 장점: 필요한 모든 데이터를 한 번의 쿼리로 로드할 수 있어, 복잡한 쿼리 .. 2024. 1. 5. 자바 NIO의 동작 방식과 사용법 자바 NIO(New Input / Output)는 'java.nio' 패지키에 속한 API로 Java 1.4부터 도입된 고성능 IO 기능을 제공합니다. NIO는 비동기적인 데이터 처리, 채널(Channel)과 버퍼(Buffer)를 사용한 효율적인 데이터 관리, 멀티플렉싱을 통한 높은 성능의 IO 작업을 가능하게 합니다. NIO는 네트워킹, 파일 처리 등 다양한 영역에서 활용됩니다. NIO의 핵심 구성요소 채널(Channel): 데이터의 소스나 목적지를 나타내는 역할을 합니다. 예를 들면 파일, 소켓 등이 있습니다. 버퍼(Buffer): 데이터를 임시 저장하는 메모리 공간으로, 데이터를 읽고 쓰는 과정에서 중요한 역할을 합니다. 셀렉터(Selector): 단일 스레드에서 여러 채널의 IO 이벤트를 모니터링.. 2024. 1. 4. 자바 IO의 동작 방식과 사용법 자바의 Input/Output(IO) 시스템은 데이터의 읽기와 쓰기를 처리하는 핵심 기능을 제공합니다. 이는 파일, 네트워크, 메모리 등 다양한 데이터 소스와 목적지에서 데이터를 읽고 쓰기 위한 다양한 API를 포함합니다. 자바 IO는 크게 스트림 기반 IO와 채널 기반 NIO로 나뉩니다. 스트림 기반 IO 스트림 기반 IO는 데이터를 연속적인 스트림으로 처리합니다. 이는 'java.io' 패키지에 정의되어 있으며, 기본적으로 두가지 타입의 스트림이 있습니다. InputStream / OutputStream: 바이트 기반 스트림으로, 바이트 단위의 데이터를 처리합니다. Reader / Writer: 문자 기반 스트림으로, 문자 데이터를 처리합니다. 자바 IO의 핵심 클래스 FileInputStream /.. 2024. 1. 4. ExecutorService Java의 ExecutorService 클래스는 비동기 모드에서 작업 실행을 단순화하기 위해 Java 5에 도입된 java.util.concurrent 패키지에 제공되는 프레임워크입니다. 이는 Java 동시성 유틸리티의 필수 부분이며 기본 Thread 클래스에 비해 상당한 발전을 나타냅니다. ExecutorService 이해 목적: ExecutorService는 작업을 비동기적으로 관리하고 실행하도록 설계되었습니다. 이는 각 작업이 실행되는 방식의 메커니즘에서 작업 제출을 분리하여 보다 유연하고 효율적인 작업 관리를 가능하게 합니다. 스레드 풀 관리: ExecutorService는 스레드 풀을 효율적으로 처리하고 작업을 할당합니다. 이 풀링 된 접근 방식은 특히 단기 작업이 많은 애플리케이션에서 각 작업.. 2023. 12. 27. 이전 1 2 3 다음