JPA

·Framework/JPA
개요회사에서 프로젝트를 하던 중, JPA 기본 키 생성 전략 중 하나인 IDENTITY 전략을 사용했을 때, 쓰기 지연이 작동하지 않아 대량의 데이터를 INSERT할 때 많은 양의 트래픽이 발생했습니다. 이번 글에서는 왜 JPA IDENTITY 전략을 사용하면 "쓰기 지연"이 작동하지 않는지 공부한 내용을 정리하고자 합니다. JPA의 쓰기 지연(Transactional Write-behind)먼저 JPA의 쓰기 지연에 대해서 살펴보겠습니다. JPA는 기본적으로 트랜잭션의 커밋 시점에 쿼리를 모아서 한 번에 보냅니다. 이를 "쓰기 지연"이라고 부릅니다.@Transactionalpublic void saveMembers() { Member member1 = new Member("회원1"); Mem..
·Framework/JPA
개요데이터베이스를 사용하다 보면 자주 마주치는 "Dialect(방언)"이라는 용어가 있습니다. JPA를 사용할 때 특히 중요한 개념인데, 이것이 무엇이고 왜 필요한지 자세히 알아보겠습니다. 방언(Dialect)이란❓ Dialect의 사전적 의미는 '방언' 또는 '사투리'입니다. 이는 같은 언어라도 지역마다 다른 표현이나 억양을 사용하는 것을 의미하는데, 데이터베이스 세계에서도 이와 유사한 개념이 존재합니다. SQL 표준이라는 공통된 언어가 있지만, Oracle, MySQL, PostgreSQL 등 데이터베이스 벤더사마다 각자의 '방언'처럼 문법이나 함수가 조금씩 다르게 구현되어 있습니다. 벤더❓: 제품이나 서비스를 판매하는 회사나 공급업체를 의미합니다.데이터베이스 컨텍스트에서 벤더는 데이터베이스 관리 시..
·Framework/JPA
프록시(proxy)란❓프록시(Proxy)란 소프트웨어 디자인 패턴의 하나로, 다른 객체를 대신하여 그 객체에 대한 접근을 제어하거나 기능을 확장하는 객체를 의미합니다. 프록시는 실제 객체를 대신하여 그 객체의 메서드 호출을 가로채고, 필요한 경우 실제 객체에 대한 작업을 수행합니다. 프록시는 일반적으로 원래 객체와 같은 인터페이스를 구현하여, 클라이언트가 원래 객체를 사용하는 것처럼 보이게 합니다. 한마디로 표현하자면 "가짜 객체"라고 할 수 있습니다.  위 그림에서 알 수 있듯이 프록시 객체는 실제 Entity를 상속 받아서 만들어지기 때문에 실제 클래스와 겉 모양이 같습니다. 프록시 객체는 실제 엔티티에 대한 접근을 지연시키며, 실제 엔티티가 필요할 때까지 데이터베이스 쿼리를 실행하지 않습니다. 또한..
·Framework/JPA
웹 애플리케이션에서 대량의 데이터를 클라이언트에게 제공할 때, 모든 데이터를 한 번에 전송하는 것은 비효율적일 뿐만 아니라 성능 문제를 일으킬 수 있습니다. 이 문제를 해결하기 위해 대부분의 애플리케이션에서는 페이징(Pagination)을 도입합니다. Spring Framework에서는 페이징과 정렬을 쉽게 처리할 수 있도록 Pageable 인터페이스를 제공합니다.본 글에서는 Spring Data JPA에 대해서 공부한 지식을 정리한 글입니다.Pageable이란❓Pageable은 Spring Data JPA에서 페이징 기능을 쉽게 구현할 수 있도록 제공하는 인터페이스입니다. Pageable 인터페이스는 페이지 번호(page), 페이지 크기(size), 정렬(sort) 정보를 담고 있으며, 이를 통해 데이..
지누박
'JPA' 태그의 글 목록