JPA(7)
-
JPA - 고아 Entity 삭제
2024/08/29 ※ 고아 Entity에 대해 알아보자. ▶ OrphanRemoval📌 고아 객체(Orphan) 제거란? JPA는 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능을 제공하는데 이것을 고아 객체 제거 라 한다. 이 기능을 사용해서 부모 엔티티의 컬렉션에서 자식 엔티티의 참조만 제거하면 자식 엔티티가 자동으로 삭제된다. ● CASCADE의 REMOVE 옵션을 적용하면 해당 Entity 객체를 삭제 했을 때 연관된 Entity 객체들을 자동으로 삭제할 수 있었다. ○ 하지만 REMOVE 옵션 같은 경우 연관된 Entity와 관계를 제거했다고 해서 자동으로 해당 Entity가 삭제 되지는 않는다. ..
2024.08.29 -
스프링 - JPA 영속성 전이
24/08/28 지난 포스팅에서 영속성 컨텍스트에 알아보았습니다.오늘은 더 나아가 영속성 전이가무엇인지 코드를 보면서 이해해봅시다. ※ 영속성 전이에 대해 알아보자.📌 영속성 전이: CASCADE는 언제 사용하는가? 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면 영속성 전이(Transitive persistence) 기능을 사용하면 된다. JPA는 CASCADE 옵션으로 영속성 전이를 제공하는데 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다. ▶ CASCADE : PERSIST ● 음식 테이블과 고객 테이블이 N : 1 양방향 관계라 가정해보자. ➡️ CascadeTest pac..
2024.08.28 -
스프링 - JPA 지연로딩
2024/08/27 ※ 지연 로딩에 대해 알아보자. ▶ 지연 로딩과 즉시 로딩 ● 음식 테이블과 고객 테이블이 N : 1 양방향 관계라 가정해보자. ➡️ FetchTypeTestpackage com.sparta.jpaadvance.fetch;import com.sparta.jpaadvance.entity.Food;import com.sparta.jpaadvance.entity.User;import com.sparta.jpaadvance.repository.FoodRepository;import com.sparta.jpaadvance.repository.UserRepository;import org.junit.jupiter.api.Test;import org.sprin..
2024.08.27 -
스프링 - JPA Query Methods란 무엇일까?
2024/08/21 ※ Query Methods란 무엇일까? ▶ Query Methods란? ● Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공한다.🔎 스프링 Document에 JPA Query Methods에 대해 상세하게 나와 있다. https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html ● JpaRepository 인터페이스에서 해당 인터페이스와 매핑되어있는 테이블에 요청하고자하는 SQL을 메서드 이름을 사용하여 선언할 수 있다. 👉..
2024.08.21 -
스프링 - JPA Auditing 적용하기
2024/08/20 ※ JPA Auditing를 적용해보자. ▶ Timestamped📌 데이터의 생성(created_at), 수정(modified_at) 시간은 포스팅, 게시글, 댓글 등 다양한 데이터에 자주 활용된다. 따라서, 각각의 Entity의 생성 수정 시간을 매번 작성하는건 너무 비효율적이다.@Getter@MappedSuperclass@EntityListeners(AuditingEntityListener.class)public abstract class Timestamped { @CreatedDate @Column(updatable = false) @Temporal(TemporalType.TIMESTAMP) private LocalDateTime ..
2024.08.20 -
스프링 - Entity란?
2024/08/12 ※ Entity에 대해 알아보자. ▶ Entity란? ● Entity : JPA에서 관리되는 클래스 즉, 객체를 의미한다. ● Entity 클래스는 DB의 테이블과 매핑되어 JPA에 의해 관리된다. ▶ Entity 클래스 만들기 ● 예시 - Memo Entity import jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.Id;import jakarta.persistence.Table;@Entity // JPA가 관리할 수 있는 Entity 클래스 지정@Table(name = "memo") // 매핑할 테이블의 이름을 지정..
2024.08.12