본문 바로가기
반응형

JPA11

JPA - @DynamicUpdate @DynamicUpdate 어노테이션에 대해서 알아보자! 사용하다 보면 엔티티의 업데이트가 예상치 못하게 전체 컬럼을 업데이트하는 상황을 마주칠 때가 있다. 특히 큰 테이블이나 자주 업데이트되는 테이블에서는 성능 문제가 생길 수 있다. 이럴 때 유용하게 사용할 수 있는 것이 바로 @DynamicUpdate 어노테이션이다.@DynamicUpdate란?@DynamicUpdate는 Hibernate에서 제공하는 어노테이션으로, 엔티티의 변경된 필드만 업데이트 한다. 기본적으로 Hibernate는 엔티티를 업데이트할 때 모든 컬럼을 업데이트하는 SQL을 생성한다. 하지만 @DynamicUpdate를 사용하면 실제 변경된 컬럼만 업데이트하는 SQL을 생성하도록 설정할 수 있다.참고 : @DynamicUpdate .. 2024. 7. 17.
JPA - Spring Data JPA에서 엔티티의 생성 시간과 수정 시간을 자동으로 관리하기 Spring Data JPA에서 엔티티의 생성 시간과 수정 시간을 자동으로 관리하기Spring Data JPA를 사용하다 보면 엔티티의 생성 시간과 수정 시간을 자동으로 관리하고 싶을 때가 있다. 이를 위해 보통 createdTime과 updatedTime 필드를 추가하고, 이 필드를 자동으로 업데이트해주는 방법을 고민하게 된다. 이번 포스팅에서는 이러한 과정을 간단하게 해결해줄 수 있는 BaseTime 클래스를 소개 해보겠다.. ! 1. Lombok으로 간편하게 Getter 생성먼저, Lombok의 @Getter 어노테이션을 사용하여 클래스의 모든 필드에 대한 getter 메서드를 자동으로 생성해준다. 요즈음 다 .. Lombok 사용함. 물론 나도 사용함 이유는 코드의 간결성과 가독성을 높일 수 있음.. 2024. 7. 17.
JPA - @EntityListeners 엔티티의 생명주기 이벤트 리스닝 EntityListeners란 무엇일까?오늘은 JPA(EntityListeners)에 대해 알아볼까 한다. EntityListeners는 엔티티의 생명주기 이벤트를 처리하기 위해 사용하는 기능이다. 이 기능을 사용하면 엔티티가 생성되거나 업데이트될 때 특정 로직을 실행할 수 있다.EntityListeners의 기본 개념EntityListeners는 엔티티 클래스에 리스너를 등록해서 엔티티의 상태 변화에 따라 특정 메서드를 호출하는 방식으로 동작한다. 예를 들어, 엔티티가 저장되기 전에, 저장된 후에, 삭제되기 전에, 삭제된 후에 등 다양한 시점에 원하는 작업을 수행할 수 있다.주요 애노테이션@EntityListeners: 엔티티 클래스에 리스너 클래스를 지정할 때 사용@PrePersist: 엔티티가 저장.. 2024. 7. 17.
JPA - @NoArgsConstructor & @AllArgsConstructor 개념 및 사용법 개요Spring Boot와 JPA에서 @NoArgsConstructor 및 @AllArgsConstructor 애노테이션은 주로 엔터티 클래스에서 사용된다. 이러한 애노테이션은 Lombok 프로젝트에서 제공되며, 코드를 간소화하고 반복적인 작업을 줄이는 데 도움이 된다. @NoArgsConstructor@NoArgsConstructor 애노테이션은 해당 클래스에 파라미터 없는 기본 생성자를 자동으로 생성한다. 이 생성자는 JPA에서 엔터티 클래스를 사용할 때 특히 유용하다import javax.persistence.Entity;import javax.persistence.Id;import lombok.*;@Entity@Data@NoArgsConstructorpublic class MyEntity { .. 2024. 5. 16.
@Builder @Builder @Builder @Builder 는 Project Lombok이라는 라이브러리에서 제공하는 어노테이션 중 하나입니다. Project Lombok은 자바 코드에서 반복적으로 작성되는 코드, 특히 getter, setter, equals, hashCode, toString 등의 코드를 어노테이션을 통해 자동으로 생성해주는 기능을 제공합니다. @Builder 어노테이션은 빌더 패턴을 자동으로 생성하는데 사용됩니다. JPA(Java Persistence API)에서 엔터티 클래스를 작성할 때, 다양한 속성들을 갖는 생성자 및 빌더 패턴을 사용하게 됩니다. 이런 반복적인 코드를 간소화하고 가독성을 높이기 위해 @Builder 어노테이션을 사용할 수 있습니다. import lombok.Builder.. 2024. 1. 4.
@GeneratedValue @GeneratedValue @GeneratedValue는 JPA(Java Persistence API)에서 엔터티 클래스의 프라이머리 키(Primary Key)를 자동으로 생성하기 위해 사용되는 어노테이션입니다. 이 어노테이션은 주로 데이터베이스에서 자동으로 증가하는 식별자 값을 생성하는 데에 쓰입니다. @GeneratedValue 어노테이션은 주로 다양한 전략(Strategy)을 사용하여 프라이머리 키를 생성할 때 함께 사용됩니다. 여러 전략 중 가장 흔하게 사용되는 것은 데이터베이스가 지원하는 자동 증가(Auto Increment) 기능을 이용하는 것입니다. 예를 들어, MySQL에서는 AUTO_INCREMENT, Oracle에서는 시퀀스(Sequence)를 사용하여 프라이머리 키를 생성할 수 있습.. 2023. 11. 21.
@NoArgsConstructor @NoArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED)는 Lombok 프로젝트에서 제공하는 애노테이션 중 하나로, 주로 클래스에 붙여서 기본 생성자를 생성하는 역할을 합니다. 이 애노테이션은 기본 생성자를 생성하되, 접근 제어자를 protected로 설정하는 기능을 수행합니다. 여기서 각 구성 요소에 대한 설명은 다음과 같습니다: @NoArgsConstructor: Lombok이 해당 클래스에 대해 자동으로 생성자를 만들도록 지시하는 애노테이션입니다. access = AccessLevel.PROTECTED: 생성된 기본 생성자의 접근 제어자를 protected로 지정합니다. 즉, 이 생성자는 같은 패키지 내에서 혹은 해당 클래스를 상속.. 2023. 11. 21.
JPA - 엔티티 패밍 Entity 매핑 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용X 저장할 필드에 final 사용 X 속성 name : JPA에서 사용할 엔티티 이름을 지정 클래스 이름을 그대로 사용, 같은 클래스 이름이 없으면 가급적 기본값을 사용 @Table name : 매핑할 테이블 이름, 기본값 엔티티 이.. 2023. 4. 28.
JPA - 영속성 컨텍스트 영속성 컨텍스트 엔티티를 영구 저장하는 환경 EntityManager.persist(entity) (DB 저장 x 영속성 컨텍스트에 저장 O) 엔티티 매니저를 통해 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) 영속성 컨텍스트에 관리 되는 상태 준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed), 삭제된 상태 비영속 Member member = new Member(); member.setId("member1"); member.setUsername("유저1"); 객체만 생성한 상태 JPA 랑 전혀 관계 없는 상태 이것을 비영속 상태라고 한다. 영속 Member membe.. 2023. 4. 26.
JPA - 기초 목차 1. 프로젝트 생성 2. 애플리케이션 개발 1. 프로젝트 생성 h2 데이터 베이스 설치 https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp www.h2database.com 사이트 들어가서 아래 그림 압.. 2023. 4. 26.
LIST