Home
My Technical Diary
Cancel

Spring Data JPA - 공통 인터페이스 기능

공통 인터페이스 구성 import org.springframework.data.jpa.repository.JpaRepository; public interface ItemRepository extends JpaRepository<Item, Long> { } 스프링 데이터 JPA가 구현 클래스 대신 생성 o...

JPA - OSIV(Open Session In View)와 성능 최적화

OSIV와 성능 최적화 OSIV는 트랜잭션이 종료되어도 영속성 컨텍스트와 데이터베이스 커넥션을 반환하지 않고 유지하여 이후 Controller나 View Template에서도 영속성 컨텍스트를 사용할 수 있게끔 해주는 옵션 Open Session In View : 하이버네이트 Open EntityManager in View : JPA ...

JPA - 컬렉션 조회 최적화

OneToMany 관계에서의 성능 최적화 예시를 위해 간단한 주문조회 API 컨트롤러와 엔티티를 구현하고 단계별로 어떻게 최적화 하는지 확인 엔티티 예시 @Entity public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @On...

JPA - 지연로딩과 성능 최적화

OneToOne, ManyToOne 관계에서의 지연로딩과 성능 최적화 예시를 위해 간단한 주문조회 API 컨트롤러와 엔티티를 구현하고 단계별로 어떻게 최적화 하는지 확인 엔티티 예시 @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") priv...

JPA - 예제 구현

예제 구현 https://github.com/ISSuh/spring_shop_example 엔티티 설계시 주의점 외래 키가 있는 곳을 연관관계의 주인으로 정할 것 연관관계의 주인은 단순히 외래 키를 누가 관리하냐의 문제이지 비지니스상 우위에 있다고 주인으로 정하면 안됨. 예를 들어 자동차와 바퀴가 있다면, 일대다 관계에서 항상 다쪽에 외래 키가...

JPA - 변경 감지와 병합

변경 감지와 병합(merge) 영속성 컨텍스트가 더는 관리하지 않는 엔티티인 준영속 엔티티를 수정하는 방법은 두가지가 있음 변경 감지 기능 사용 병합(merge) 사용 기존에 영속성 컨텍스트에 관리되고 있는 엔티티를 detach()를 통해 더이상 관리하지 않는 준영속 엔티티를 만드는 방법도 있지만, find()를 통해 얻오언 엔티...

JPA - 객체 지향 쿼리 언어(2)

경로 표현식 상태필드(state field) 경로 탐색의 끝이며 더이상 탐색 불가 단일 값 연관 경로 묵시적 내부 조인(inner join) 발생 이후 상태필드까지 탐색 가능 컬렉션 값 연관 경로 묵시적 내부조인 발생 더이상 탐색...

Spring MVC - PRG(Post/Redirect/Get) 패턴

PRG(Post/Redirect/Get) 패턴 위와 같은 흐름으로 요청이 전달된다고 가정 했을떄, 요청에 대한 흐름을 자세히 표현하면 아래 그램과 같음 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송함. 상품 등록 폼에서 데이터를 입력하고 저장을 하게되면 POST /add + 상품 데이터를 서버로 전송함. 이 상태에서 ...

JPA - 객체 지향 쿼리 언어(1)

JPQL 개요 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리 SQL을 추상화하여 특정 데이터베이스 SQL에 의존하지 않음 쿼리시 테이블이 아닌 엔티티 객체를 대상으로 쿼리 JPQL은 엔티티 객체를 대상으로 쿼리 SQL은 데이터베이스 테이블을 대상으로 쿼리 String jpql = ...

JPA - 프록시와 연관관계 관리(2)

JPA의 데이터 타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나...