Spring/Spring Data JPA 5

[Spring Data JPA] 영속성 전이 / 고아 객체

영속성 전이 Cascade - 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션 - 단일 엔티티에 완전히 종속적이고 부모 엔티티와 자식 엔티티의 라이프 사이클이 유사할 때 사용 권장 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List orderItems = new ArrayList(); 고아 객체 Orphan - 부모 엔티티와 연관 관계가 끊어진 자식 엔티티를 삭제함 - 참조하는 곳이 하나인 경우에만 사용 - @OneToOne, @OneToMany @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) pri..

[Spring Data JPA] Page / Pageable / PageRequest

Page / Pageable / PageRequest ● Spring Data JPA에서 제공하는 페이징 관련 인터페이스 ● org.springframwork.data.domain 패키지 (중앙 도메인 Repository 추상화) : Page, Pageable, PageRequest ● Page : 페이지 정보를 담는 인터페이스 - empty(), getTotalElements(), getTotalPages() - API https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Page.html ● Pageable : 페이징 처리하는 인터페이스 - first(), getPageNumber(), ge..

[Spring Data JPA] Repository

Repository - Spring Data JPA에서는 엔티티 매니저를 직접 이용해 코드를 이용하지 않아도 Repository 인터페이스로 만들 수 있다 (Data Access Object (DAO)의 역할) - JpaRepository를 상속받음 * JpaRepository는 2개의 제네릭타입을 사용 : JpaRepository package com.shop.repository; import com.shop.entity.Item; import org.springframework.data.jpa.repository.JpaRepository; public interface ItemRepository extends JpaRepository { } Repository 인터페이스 작성만으로 데이터를 inser..

[Spring Data JPA] JPA란? (Java Persistence API)

JPA (Java Persistence API) - 자바 ORM 기술에 대한 표준 API - 대표적 구현체 : Hibernate, EclipseLink, DataNucleus, OpenJpa, TopLink 등 *ORM (Object Relational Mapping) : 객체와 관계형 데이터베이스를 매핑해주는 것 장점 - 특정 데이터베이스에 종속되지 않음 - 객체지향적 프로그래밍 - 직관적이고 비즈니스 로직에 집중할 수있음 - 생산성 향상 단점 - 복잡한 쿼리 처리 - 성능 저하 위험 - 관계형 데이터베이스에 대한 이해필요 ■ JPA 구성 및 동작방식 Entity Manager Factory 엔티티 매니저 팩토리 - Entity Manager를 관리하는 주체 - 사용자로부터 요청이 오면 엔티티 매니저 ..