전체 글 (93) 썸네일형 리스트형 [JPA] @DynamicUpdate 간단히 @DynamicUpdate는 JPA 또는 Hibernate에서 제공하는 애노테이션으로, 엔티티의 변경된 필드만 업데이트 쿼리에 포함하도록 최적화하는 데 사용됩니다. 일반적으로 JPA는 엔티티를 업데이트할 때 엔티티의 모든 필드를 업데이트하는 쿼리를 생성합니다. 하지만 @DynamicUpdate를 사용하면, 실제로 변경된 필드만 포함된 쿼리를 생성합니다. 특징변경된 필드만 업데이트@DynamicUpdate가 적용된 엔티티는 변경된 값이 있는 필드만 업데이트 SQL 쿼리에 포함됩니다.이로 인해 불필요한 필드 업데이트를 줄이고 성능 최적화에 도움이 됩니다.런타임 시 동작쿼리를 런타임 시점에 동적으로 생성하므로, 컴파일 시점에는 업데이트 쿼리가 정해지지 않습니다.쿼리 가독성 증가업데이트 쿼리에 변경된 필드만 포.. [JPA]Spring에서 트랜잭션 롤백(RuntimeException, Checked Exception) Java 예외 처리 모델과 관련성Checked Exception:컴파일러에서 반드시 처리해야 하는 예외.호출부에서 명시적으로 try-catch로 처리하거나 throws로 위임해야 합니다.예: IOException, SQLException.Unchecked Exception (RuntimeException):컴파일러에서 강제하지 않는 예외.프로그램의 논리적 오류 또는 예측 불가능한 상황에서 발생.예: NullPointerException, IllegalArgumentException.Spring 트랜잭션 관리 설계 철학Spring의 트랜잭션 롤백 정책은 다음과 같은 가정을 기반으로 합니다:Checked Exception은 복구 가능성:Checked Exception은 애플리케이션이 복구할 가능성이 있는 예.. [JPA] 영속성 캐시(Persistence Context) 영속성에 대해 이해가 잘 안가서 다시 한 번 정리를 해봅니다. 영속성 캐시(Persistence Context)란?영속성 캐시는 JPA의 핵심 개념 중 하나로, 엔티티 객체를 메모리 내에서 관리하는 엔티티 저장소입니다. 영속성 컨텍스트라고도 불리며, **EntityManager**를 통해 동작합니다. 이는 애플리케이션과 데이터베이스 간의 중간 계층 역할을 하며 성능을 최적화하고 데이터의 일관성을 유지합니다. 특징 및 작동 방식1. 1차 캐시엔티티를 데이터베이스에서 가져오거나 저장할 때, EntityManager는 먼저 영속성 컨텍스트(1차 캐시)에 데이터를 저장합니다.동일한 트랜잭션 내에서 동일한 엔티티를 요청하면, 데이터베이스를 다시 조회하지 않고 캐시된 객체를 반환합니다.데이터베이스에 대한 불필요한 .. [JPA] generate-ddl과 ddl-auto 차이 generate-ddl과 ddl-auto는 모두 JPA와 Hibernate에서 데이터베이스 스키마 관리를 제어하는 설정이지만, 사용하는 맥락과 동작이 다릅니다. 1. generate-ddl개요기능: JPA의 표준 속성으로, Hibernate와 같은 JPA 구현체가 데이터베이스 스키마를 생성할지 여부를 제어합니다.값: true 또는 falsetrue: 애플리케이션이 시작될 때 JPA 구현체가 엔티티 정의에 따라 데이터베이스 스키마를 생성합니다.false: 데이터베이스 스키마를 생성하지 않습니다.기본값: false//예시spring: jpa: generate-ddl: true특징generate-ddl은 단순히 스키마 생성 여부를 결정하는 옵션입니다.JPA 표준에 정의되어 있으며 Hibernate 외에.. [JPA] hibernate.ddl-auto hibernate.ddl-auto는 Hibernate가 데이터베이스 스키마를 어떻게 관리할지 결정하는 중요한 설정입니다 주요 값과 동작1. none동작:Hibernate는 데이터베이스 스키마와 관련된 어떤 작업도 수행하지 않습니다.기본값으로 설정되면 스키마 변경 없이 데이터베이스와 애플리케이션 간의 매핑만 처리합니다.사용 사례:데이터베이스 스키마를 수동으로 관리하며, 애플리케이션에서 변경이 필요 없을 때.2. create동작:애플리케이션 시작 시 기존 데이터베이스 스키마를 모두 삭제하고 새로 생성합니다.기존 데이터 및 테이블이 모두 삭제됩니다.사용 사례:초기 개발 단계에서 데이터베이스 구조를 자주 변경할 때.테스트 환경에서 새로운 구조를 매번 생성해야 할 때.주의:기존 데이터를 모두 삭제하므로 프로덕션 .. [JPA] Spring JPA 관련 yml 설정의 주요 항목 1. generate-ddl설명:데이터베이스 스키마를 애플리케이션의 엔티티(Entity) 모델을 기반으로 자동 생성할지 여부를 설정합니다.DDL은 테이블 생성 및 수정과 같은 데이터베이스 구조 정의를 나타냅니다.값:true: 엔티티를 기반으로 데이터베이스 스키마를 자동 생성합니다.false: 스키마를 생성하지 않습니다. (기본값)주의:이 설정은 Hibernate 또는 JPA 구현체에 따라 동작하며, 데이터베이스에 직접 영향을 미칩니다.프로덕션 환경에서는 일반적으로 false로 설정합니다.2. hibernate.ddl-auto설명:Hibernate가 데이터베이스 스키마를 어떻게 관리할지 설정합니다.주요 값:none: 스키마 자동 생성 비활성화.create: 애플리케이션 시작 시 기존 스키마를 삭제하고 새로.. [JPA] spring.jpa.properties.hibernate.dialect spring.jpa.properties.hibernate.dialect는 Hibernate에서 사용하는 Dialect를 지정하는 설정입니다. 이 설정은 Hibernate가 특정 데이터베이스와 상호작용할 때 적합한 SQL 문법과 기능을 사용하는 데 필요합니다. Dialect란?Dialect는 데이터베이스 벤더마다 다른 SQL 문법 및 기능을 추상화하여 Hibernate가 데이터베이스와 독립적으로 작동할 수 있게 해주는 개념입니다.예를 들어, MySQL, PostgreSQL, Oracle 등의 데이터베이스는 LIMIT, OFFSET, 쿼리 함수 등에서 서로 다른 문법을 사용합니다.Hibernate Dialect는 이런 차이를 해결하기 위해 데이터베이스별로 제공되며, 각 데이터베이스의 문법 및 최적화된 쿼리를.. [JPA] 영속성 컨텍스트(Persistence Context) 영속성 컨텍스트(Persistence Context)는 JPA에서 매우 중요한 개념으로, 엔티티(Entity) 객체를 관리하고 영속성을 유지하는 1차 캐시 역할을 하는 저장소입니다. 이를 통해 데이터베이스와 애플리케이션 간의 효율적인 상호작용을 지원합니다. 1. 영속성 컨텍스트란?JPA에서 **엔티티 매니저(EntityManager)**가 관리하는 논리적인 저장 공간.애플리케이션과 데이터베이스 사이에서 엔티티 객체를 캐싱하여 데이터 변경 및 조회를 관리. 엔티티 객체의 생명 주기(lifecycle)를 관리함.2. 엔티티의 생명 주기엔티티 객체는 다음 4가지 상태를 가질 수 있습니다: 1) 비영속(Transient)영속성 컨텍스트와 전혀 관계가 없는 상태. 단순히 new 키워드로 생성된 상태. 데이터베이스.. 이전 1 2 3 4 5 6 7 ··· 12 다음