일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Today
- Total
목록자바 orm 표준 jpa 프로그래밍 (13)
기록
시작하면서Java Persistence API(JPA)는 객체와 관계형 데이터베이스 간의 매핑을 지원하는 강력한 도구로, 개발자들이 SQL을 직접 다루지 않고도 데이터를 효율적으로 관리할 수 있도록 돕습니다. 이 글에서는 책 "자바 ORM 표준 JPA 프로그래밍"의 16장에서 다룬 중요한 개념과 예제를 중심으로 내용을 정리하였습니다.1. 격리 수준과 문제점JPA에서는 트랜잭션 격리 수준을 이해하고 데이터 일관성을 유지하는 것이 중요합니다. 격리 수준에 따라 발생할 수 있는 문제점을 아래 표에 정리하였습니다.격리 수준설명발생할 수 있는 문제READ UNCOMMITTED트랜잭션에서 커밋되지 않은 데이터를 읽을 수 있음Dirty ReadREAD COMMITTED커밋된 데이터만 읽을 수 있음Non-repeata..
JPA 활용과 심화 이해이 글은 "자바 ORM 표준 JPA 프로그래밍" 책의 주요 내용을 바탕으로 작성되었습니다. 특히 15장에서 다룬 예외 처리, 엔티티 비교, 프록시 문제 및 성능 최적화에 관한 내용을 정리한 기록입니다.1. 예외 처리1.1 JPA 예외 개요JPA를 사용할 때 주로 발생하는 예외는 두 가지로 구분됩니다.트랜잭션 롤백이 필요한 예외데이터베이스 상태를 되돌려야 할 정도로 심각한 문제.예시: DataIntegrityViolationException, OptimisticLockingFailureException롤백이 필요한 이유는 데이터 무결성 위반이나 잠금 충돌 같은 경우 데이터의 일관성을 보장해야 하기 때문입니다.트랜잭션 롤백이 필요하지 않은 예외시스템에 큰 영향을 주지 않고 처리 가능한..
시작하면서JPA는 객체 지향 프로그래밍의 장점을 살려 데이터베이스를 효율적으로 관리할 수 있도록 도와줍니다. 특히 컬렉션, 컨버터, 리스너, 엔티티 그래프와 같은 부가 기능은 코드의 생산성과 유지보수를 크게 향상시킵니다. 이 글에서는 이러한 기능을 이해하기 쉽게 정리하고, 실제 코드와 함께 활용법을 살펴보겠습니다.1. 컬렉션컬렉션은 엔티티와 연관된 데이터를 저장하는 데 사용됩니다. JPA는 Collection, List, Set, Map 등 다양한 컬렉션 타입을 지원하며, 각 타입은 고유한 특징을 가지고 있습니다.1.1 Collection과 List중복 데이터를 허용합니다.엔티티를 추가해도 지연 로딩된 컬렉션은 초기화되지 않습니다.코드 예제@Entitypublic class Team { @Id @G..
시작하면서JPA를 사용하면서 트랜잭션과 영속성 컨텍스트가 어떻게 상호작용하는지, 그리고 이를 서비스와 프리젠테이션 계층에서 어떻게 관리할지에 대한 이해는 매우 중요합니다. 이번 글에서는 트랜잭션 범위의 영속성 컨텍스트, 준영속 상태에서 발생하는 지연 로딩 문제, 그리고 OSIV(Open Session In View)를 활용해 문제를 해결하는 방법을 알아보겠습니다.1. 트랜잭션 범위의 영속성 컨텍스트1.1 트랜잭션과 영속성 컨텍스트의 관계스프링 프레임워크는 기본적으로 트랜잭션 범위의 영속성 컨텍스트 전략을 사용합니다. 이 전략은 트랜잭션의 생명주기와 영속성 컨텍스트의 생명주기가 동일하다는 의미입니다. 즉, 트랜잭션이 시작되면 영속성 컨텍스트도 생성되고, 트랜잭션이 종료될 때 함께 종료됩니다. 같은 트랜잭션..
시작하면서아래는 "자바 ORM 표준 JPA 프로그래밍" 책과 강의를 듣고 정리한 내용입니다. JPA를 사용하다 보면 성능 문제로 많은 고민을 하게 됩니다. 특히 연관관계가 설정된 엔티티를 조회할 때 발생할 수 있는 대표적인 문제로 N+1 문제가 있습니다. 이 포스팅에서는 N+1 문제의 발생 원인과 해결 방법, 검색 조건 최적화, 그리고 특정 필드만 조회하는 최적화 기법에 대해 알아보겠습니다.1. N+1 문제N+1 문제를 이해하기 위해 우선 연관된 엔티티 설계를 살펴보겠습니다. 아래는 Member와 Team의 엔티티 설계 예시입니다. Member는 Team과 다대일(ManyToOne) 관계를 가지고 있습니다.@Entitypublic class Member { @Id @GeneratedValue(..
시작하면서아래 내용은 "자바 ORM 표준 JPA 프로그래밍" 책을 읽고 정리한 내용입니다. 스프링 데이터 JPA는 Java Persistence API(JPA)를 더 쉽게 사용할 수 있도록 도와주는 모듈로, 데이터베이스와의 상호작용을 효율적으로 처리하는 데 큰 역할을 합니다. 이 모듈은 CRUD(생성, 조회, 수정, 삭제) 작업을 위한 공통 인터페이스를 제공하며, 개발자가 리포지토리를 구현할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 해당 구현체를 동적으로 생성하고 주입해줍니다. 이를 통해 데이터 접근 계층을 간결하게 유지할 수 있고, 생산성을 크게 높일 수 있습니다.공통 인터페이스 기능스프링 데이터 JPA는 CRUD 작업을 위한 공통 메서드를 제공합니다. 대표적인 메서드는 다음과 같습..
시작하면서자바 ORM 표준 JPA 프로그래밍을 공부하면서 9장에서 다루는 "값 타입"에 대해 정리해보았습니다. 이번 글에서는 값 타입의 종류와 그 특징을 설명하며, 실제 개발에 어떤 점들을 고려해야 하는지 소개합니다.값 타입이란?JPA에서 값 타입은 int, Integer, String처럼 단순한 값을 나타내는 자바 타입이나 객체를 말합니다. JPA에서는 이러한 값 타입을 크게 세 가지로 나눌 수 있습니다.기본 값 타입: 자바에서 제공하는 기본 데이터 타입 (int, double, Integer, String 등)임베디드 타입 (복합 값 타입): 사용자가 직접 정의한 여러 속성을 하나로 묶은 값 타입컬렉션 값 타입: 값 타입을 여러 개 저장하기 위해 컬렉션에 보관하는 방식입니다.각 값 타입은 JPA에서 ..
시작하면서아래 내용은 "자바 ORM 표준 JPA 프로그래밍" 8장을 읽으면서 정리한 내용입니다. JPA(Java Persistence API)를 사용할 때 중요한 개념 중 하나는 '연관관계 관리'입니다. 연관된 엔티티를 효과적으로 로딩하고, 엔티티의 생명주기를 관리하는 것은 JPA를 활용하는 데 매우 중요한 요소입니다. 이번 포스팅에서는 프록시, 즉시 로딩과 지연 로딩, 영속성 전이, 고아 객체와 같은 주요 개념들을 다루어 보겠습니다.1. 프록시와 지연 로딩1.1 프록시란?JPA에서는 데이터베이스에서 객체를 조회할 때, 실제 데이터를 필요한 순간까지 미루는 '지연 로딩(Lazy Loading)'이라는 방식을 사용할 수 있습니다. 이때 중요한 역할을 하는 것이 바로 프록시입니다.프록시는 실제 엔티티 대신 ..