[Spring Data JPA] 즉시로딩, 지연로딩
·
Web & Android/Spring Data JPA
즉시 로딩 ⇒ 연관된 엔티티를 즉시 조회 후 영속성 컨텍스트에 저장 연결된 모든 데이터를 즉시 가지게 된다는 것. 문제점 조인해서 가져오는 엔티티가 많아질수록 쿼리가 어떻게 실행될지 개발자가 예측하기 힘듦 사용하지 않은 엔티티도 한꺼번에 가져오기 때문에 성능상 문제가 발생할 수 있음 @ManyToOne, @OneToOne처럼 One으로 끝나는 것들은 기본값이 즉시 로딩 @OneToMany, @ManyToMany처럼 Many로 끝나는 것들은 기본값이 지연 로딩 즉시 로딩 대신에 지연 로깅 방식 사용 -> (fetch = FetchType.*LAZY*) 연관관계 어노테이션 뒤에 붙이기 // 양방향 매핑을 하기 위해 설정, 영속성 전이 설정, 고아객체 설정(고아객체가 되면 다 날려버리겠다는 것) @OneToM..
[Spring Data JPA] 영속성 전이, 고아객체
·
Web & Android/Spring Data JPA
영속성 전이 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션 ex) 학생이라는 엔티티가 있는데 학생이 졸업을 해서 연관된 엔티티들을 지워야함 하나도 남김 없이 연관된 엔티티를 지워야만 메인(학생)엔티티를 지울 수 있음 이걸 설정하는게 영속성 전이 cascade 옵션 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) // 양방향 매핑을 하기 위해 설정 private List orderItems = new ArrayList(); 1. 주문 영속성 전이 부모인 Order Entity가 저장될 때, 자식인 OrderItem 또한 저장되는 영속성 전이 OrderRepository 생성 import kr.spring.orde..
[Spring Data JPA] 연관 관계 매핑
·
Web & Android/Spring Data JPA
1. 종류 일대일(1:1) : @OneToOne 일대다(1:N) : @OneToMany 다대일(N:1) : @ManyToOne 다대다(N:M) : @ManyToMany 2. 방향 단방향 A 엔티티만 B 엔티티를 참조하는 것. 즉, 한 쪽만 참조하는 것을 말함. 양방향 A 엔티티와 B 엔티티가 서로를 참조하는 것. JPA 객체지향 중심 설계에서는 단방향, 양방향 존재 데이터베이스 중심 설계 테이블에서 관계는 항상 일대일 단방향 매핑 회원들은 각자 자신의 장바구니를 하나 갖고 있으며 장바구니 입장에서 봐도 자신과 매핑되는 한 명의 회원을 갖는 일대일 매핑 구조 장바구니 Entity는 현재 회원 Entity에 대한 정보를 알고 있음 회원 Entity에는 장바구니(Cart) Entity와 관련된 소스가 전혀 없..
[Spring Data JPA] Querydsl
·
Web & Android/Spring Data JPA
Querydsl은 JPQL을 코드로 작성할 수 있도록 도와주는 빌더 API 문자열이 아닌 자바 소스코드로 작성하기 때문에 컴파일 시점에 오류 발견 가능 쿼리를 재사용할 수 있으며 제약 조건 조립 및 가독성을 향상시킬 수 있음 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리 생성 가능 자동완성기능을 이용하여 생산성 향상시킬 수 있음 이전 버전 // querydsl 추가 1 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } group = 'kr.inhat..
[Spring Data JPA] @Query
·
Web & Android/Spring Data JPA
@Query @Query 어노테이션을 사용해 Custom으로 쿼리문을 지정할 수 있다. public interface MemberRepository extends JpaRepository { @Query("select m.username from Member m") List findUsernameList(); } SQL과 유사한 JPQL이라는 객체지향 쿼리 언어를 통해 복잡한 쿼리도 처리 가능 JPQL 엔티티 객체를 대상으로 쿼리를 수행하는 객체지향 쿼리 SQL을 추상화해서 사용하기 때문에 특정 데이터베이스 SQL에 의존하지 않음 import com.shop.entity.Item; import org.springframework.data.jpa.repository.JpaRepository; public ..
[Spring Data JPA] JPA
·
Web & Android/Spring Data JPA
💡 매핑의 뜻 : 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 짝 지어(=연결 지어) 저장하는 데이터 구조 JPA(Java Persistence API) 자바 ORM 기술에 대한 API 표준 Persistence : 영속성 persist() 메소드를 사용해서 저장 Hibernate, OpenJPA ⇒ API(Application Programming Interface) Spring Data JPA save() 메소드를 사용해 저장이나 업데이트를 함 JPA 장점 특정 데이터베이스에 종속되지 않음 조금 종속 됨, 거의 구분없이 사용 가능 오라클, MySQL, MSSQL 등등을 왔다갔다 하면서 사용 가능 객체지향적으로 설계 가능 직관적이고 비즈니스 로직에 집중 유지보수 유리 및 생산..