분류 전체보기 (357) 썸네일형 리스트형 [Spring Data JPA] JPA Hint & Lock JPA HintJPA Hint는 Java Persistence API에서 쿼리 실행 시 추가적인 힌트를 제공하여 동작을 커스터마이즈하거나 성능 최적화를 돕는 기능JPA 쿼리의 동작 방식을 유연하게 제어하거나, 특정 데이터베이스 벤더에 특화된 설정을 추가하는 데 사용된다. (SQL 힌트가 아니라 JPA 구현체에게 제공하는 힌트) 지금까지 JPA Hint의 뜻과 사용 용도를 알아보았고, 이제부터는 사용 방법에 대해서 알아보자. 쿼리 힌트 사용 @QueryHints(value = @QueryHint(name = "org.hibernate.readOnly", value = "true")) Member findReadOnlyByUsername(String username); 쿼리 힌트 사용 확인@Testpubli.. [Spring Data JPA] @EntityGraph 엔티티 그래프(Entity Graph)JPA(EntityManager)나 Hibernate에서 제공하는 기능으로, 엔티티를 조회할 때 연관된 엔티티를 어떤 방식으로 가져올지 정의하는 방법이다. 이를 통해 명시적으로 패치 전략(Fetch Strategy)을 설정하고, 필요에 따라 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading)을 제어할 수 있다. 엔티티 그래프를 사용하는가?N+1 문제 해결:JPA의 기본 설정에서 연관 엔티티는 지연 로딩(FetchType.LAZY)으로 설정한다.필요 시 연관된 데이터를 쿼리하는데, 다수의 추가 쿼리가 발생해 성능 문제가 생길 수 있다.이를 엔티티 그래프로 해결할 수 있다.JPQL 대체:복잡한 JPQL을 사용하지 않고, 엔티티 그래프를 활용해 간결.. [Spring Data JPA] 벌크성 수정 쿼리 벌크성 쿼리벌크성 쿼리(Bulk Query)란 데이터베이스에서 한 번의 실행으로 대량의 데이터를 삽입, 수정, 삭제하거나 조회하는 쿼리를 의미한다.주로 많은 데이터를 효율적으로 처리하기 위해 사용되며, 데이터 처리 속도를 높이고 시스템 리소스를 절약하는 데 유용하다.예시로 모든 직원의 연봉을 10% 인상하는 쿼리를 짜야 한다면, 직원들을 하나씩 끌어서 10% 씩 인상하는 것보다는 DB에서 업데이트 쿼리를 한번만에 끝내고 커밋하는 것이 효율적일 것이다. 먼저 순수 JPA를 사용하여 벌크성 수정 쿼리를 처리하는 방법을 알아보자. JPA를 사용한 벌크성 수정 쿼리public int bulkAgePlus(int age) { int resultCount = em.createQuery("update Membe.. [Spring Data JPA] 페이징과 정렬 순수 JPA 페이징과 정렬JPA에서 페이징을 어떻게 할 것인가? 페이징과 정렬을 사용하는 예제 코드검색 조건: 나이가 10살정렬 조건: 이름으로 내림차순페이징 조건: 첫 번째 페이지, 페이지당 보여줄 데이터는 3건순수 JPA 페이징 리포지토리 코드public List findByPage(int age, int offset, int limit) { return em.createQuery("select m from Member m where m.age = :age order by m.username desc ", Member.class) .setParameter("age", age) .setFirstResult(offset) .. [Spring] 스프링 빈과 스프링 컨테이너 스프링 빈스프링 빈(Spring Bean)은 스프링 컨테이너가 관리하는 객체로, 스프링 애플리케이션에서 구성 요소로 동작하며, 의존성 주입과 같은 스프링의 핵심 기능을 활용할 수 있도록 관리된다. 즉, 빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다. 쉽게 이해하자면 new 키워드 대신 사용한다고 보면된다. 스프링 빈의 특징1. 스프링 컨테이너에서 관리된다개발자가 직접 생성하고 관리하지 않고, 스프링 컨테이너(ApplicationContext)가 객체의 생명 주기를 관리한다.즉, 스프링 프레임워크가 객체(빈)의 생성부터 소멸까지의 생명 주기를 책임지고 관리한다는 뜻이다.스프링 컨테이너(ApplicationContext)는 스프링 빈(Bean)을 생성하고 관리하.. [JPA] OSIV와 성능 최적화 OSIV와 성능 최적화 Open Session In View: 하이버네이트Open EntityManager In View: JPA(관례상 둘 다 OSIV라 한다.)OSIV ON `spring.jpa.open-in-view` : true 기본값 장점이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다.OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트 와 데이터베이스 커넥션을 유지한다.그래서 지금까지 View Template이나 API 컨트롤러에서 지연 로딩이 가능했던 것이다.지연 로딩은 영속성 컨텍스트가 살아있어야 가능하고, 영속성 컨텍스트는 기본적으로 데이터베이스 커넥션을 유지한다.이것 자체가 큰 장.. [JPA] 컬렉션 조회 최적화 컬렉션인 일대다 관계(OneToMany) 를 조회, 최적화 주문 조회 V1: 엔티티 직접 노출 /** * V1. 엔티티 직접 노출 * - Hibernate5Module 모듈 등록, LAZY=null 처리 * - 양방향 관계 문제 발생 -> @JsonIgnore */@GetMapping("/api/v1/orders")public List ordersV1() { List all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); order.getDelivery().getAddress(); List orderItems =.. [JPA] 지연 로딩과 조회 성능 최적화 xToOne(ManyToOne, OneToOne) 관계 최적화 간단한 주문 조회 V1: 엔티티를 직접 노출 /** * xToOne (ManyToOne, OneToOne) * Order * Order -> Member * Order -> Delivery */@RestController@RequiredArgsConstructorpublic class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/simple-orders") public List ordersV1() { List all = orderRepository.findAllByString(new Orde.. [복습] 데이터 표현 형식 데이터 표현 형식 XML, JSON, YAML, Properties는 모두 데이터를 저장하고 전송하기 위한 형식이다.XML, JSON, YAML, Properties와 같은 형식은 일반적으로 데이터 표현 형식(Data Representation Formats) 또는구성 파일 형식(Configuration File Formats)이라고 불린다.각각의 특징과 사용 사례를 쉽게 정리해보자. 1. XML (Extensible Markup Language)특징태그 기반의 데이터 형식.계층적 구조를 가지며, 데이터를 트리 형태로 표현.사람과 기계 모두 읽을 수 있지만, 태그가 많아 가독성이 낮음.유효성 검사를 위해 DTD나 XSD와 함께 사용 가능.데이터 교환 표준으로 초기 웹 서비스와 설정 파일에서 많이 사용됨... [CS] 멀티 코어 vs 멀티 프로세스 vs 멀티 스레드 멀티프로세스(Multi-Process)초기의 컴퓨터 시스템에서는 한 번에 하나의 작업(프로세스)만 실행할 수 있었습니다. 하지만 사용자 수가 늘어나고 동시에 여러 작업을 처리해야 할 필요성이 생기면서, 한 시스템에서 여러 프로세스를 동시에 실행하는 멀티프로세스 개념이 등장했습니다. 멀티프로세스는 하나의 운영체제에서 독립적인 여러 프로그램(프로세스)을 동시에 실행하는 방식입니다.각 프로세스는 독립적인 메모리 공간을 가지며, 서로 간섭하지 않습니다. 장점각 프로세스가 독립적이기 때문에 한 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않음.안정성과 보안성이 높음.단점프로세스 간의 통신(IPC)이 복잡하고 비용이 높음.독립적인 메모리 공간을 사용하기 때문에 메모리 사용량이 많음.예시웹 브라우저에서 탭마다 독.. 이전 1 2 3 4 5 6 7 ··· 36 다음 목록 더보기