@Modifying @Query어노테이션을 통해 작성된 insert / update/ delete 쿼리에서 사용하는 어노테이션 다음은 순수 jpa에서 사용한 벌크성 repository 기존에 Spring data jpa 를 사용하기전에는 .executeUpdate(
Fetch join의 가장 단순한 뜻은 연관관계의 엔티티나 컬렉션을 프록시(가짜 객체)가 아닌 진짜 데이터를 한번에 같이 조회하는 기능이다!JPQL에서 지원하는 기능으로 성능 최적화를 위해 사용한다.연관된 엔티티나 컬렉션을 SQL로 한번에 조회하는 기능이다. JOIN
전에 쓴 글에서 Fetch join의 첫번째 문제점 중 하나는 바로 fetchjoin을 하나의 컬렉션만 가능한 것이었다. Spring data jpa가 제공하는 @EntityGraph를 사용하면 여러개의 컬렉션은 fetch join이 가능하다. @EntityGrap
Spring Data JPA에서 제공하는 JpaRepository 인터페이스는 스프링이 구현체를 자동으로 생성해준다.Spring Data JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 메서드들이 너무 많다.기본적인 네이밍 메서드 , @Query 어노테이션
객체의 입장에서 공통 매핑정보가 필요할 때 사용한다.공통 매핑 정보가 필요할 때 ,부모 클래스에 선언을 해주고 속성만 상속 받아서 사용하고 싶을 때 @MappedSuperClass 를 사용한다. 상속광계 매핑이 아니다.@MappedSuperclass가 선언되어 있는 클
우선 앞서 다양한 연관관계에 맞게 쿼리의 N+1문제등을 해결하기위해 Fetch Join을 학습하였다. 하지만 주문(Order) 엔티티를 조회할 때 문제가 발생한다.우선 Order는 밑의 그림과 보는바와 같이 연관관계를 갖고있다 회원(Member)와 다 : 1 관계배송(
JPA에서의 DELETE 방법데이터를 삭제하는 방법에는 hard delete, soft delete 2가지 종류가 있습니다.hard delete는 delete 쿼리를 날려서 데이터베이스에서 실제로 삭제하는 방법을 말합니다.soft delete는 실제로 데이터베이스에서
프로젝트에서 JPA를 사용하면서 진행중인데 , 어떠한 특정 값이 Null로 들어오는 NullPointerException이 발생하는 것을 확인했다. 결국 디버깅을 통해서 특정 값이 null로 들어오는 것을 확인했는데 , 이제 코드로 설명하겠다.Controller우선 다
현재 진행중인 프로젝트에서 회원과 관심주제를 처음에는 ManyToMany 관계로 설정하였다. 하지만 ManyToMany관계는 중간 테이블이 숨겨져 있으므로 예상하지 못한 쿼리가 나갈 수 있기 때문에 연결 테이블(조인 테이블)을 추가해서 일대다, 다대일 관계로 풀어내기로
연관관계를 맺는 두 엔티티 간에 값을 넣어주는 요청이 있는데 save the transient instance before flushing 에러가 발생하였다. 연관관계를 갖는 엔티티의 값을 넣어줄 때 종종 TransientObjectException에러가 발생하였는데
현재 프로젝트에서 스터디 모임에 참여 신청을 한 회원이 모임 신청을 취소 할 시에는 모임의 타입(EventType)이 선착순 모임일 시 자동으로 다음 대기의 회원을 모임 참여확정을 해줘야하는 기능을 만들어야한다.Event(모임)과 Enrollment(등록)의 연관관계는
jpa 에서는 em.find() 는 데이터베이스를 통해서 실제 엔티티 객체를 조회하는 메서드이고em.getReference()는 DB의 조회를 미루는 가짜(프록시) 엔티티 객체를 조회하는 메서드이다.질문으로부터 프록시에 대한 학습을 시작한다.Member 엔티티를 조회