SPRING/JPA
-
@EntityGraph 사용법SPRING/JPA 2021. 12. 6. 19:34
EntityGraph는 페치 조인(FETCH JOIN)의 간편 버전이라고 생각하면 됩니다. EntityGraph의 4가지 사용법을 알아보겠습니다. [ 이전 글(페치조인 설명)을 꼭 참고해주세요. ] 저번 시간에 이어 먼저 MemberRepository를 살펴보겠습니다. 첫 번째 방법 27라인을 보시면 엔티티 그래프가 추가 되었습니다. 이전과는 달리 [ @Query("...") 페치 조인을 위한 JPQL쿼리를 ] 짜지 않고 @EntityGraph를 이용하여 페치 조인을 사용할 수 있습니다. 바로 테스트해보겠습니다. 결과 이전 페치조인과 동일한 결과를 얻을 수 있습니다. 두 번째 방법 31라인을 보시면 엔티티 그래프 사용 두 번째가 추가되었습니다. 이번에는 JPQL과 엔티티 그래프를 같이 사용하는 방법입니다..
-
페치조인(fetch Join )이란SPRING/JPA 2021. 12. 3. 02:24
페치(fetch)조인은 SQL에서 사용하는 조인의 종류는 아니고 JPQL에서 성능 최적화를 위해 제공하는 기능입니다. 이것은 연관된 엔티티나 컬렉션을 한 번에 같이 조회하는 기능인데 join fetch 명령어로 사용할 수 있습니다. 페치 조인을 사용해서 회원(Member) 엔티티를 조회하면서 연관된 팀(Team) 엔티티도 함께 조회하는 JPQL을 실행해보겠습니다. 이해를 돕기 위해 회원, 팀 엔티티부터 순서대로 살펴보겠습니다. 23~25 라인을 보시면 Team엔티티와 N:1 관계, 지연 로딩으로 설정되어 있는걸을 확인하실 수 있습니다. (FetchType.LAZY) 23~24 라인을 보시면 Member엔티티와 양방향 매핑으로 되어있다는 것을 확인하실수 있습니다. 다음으로는 MemberRepository를..
-
Spring Data JPA(쿼리 메소드)SPRING/JPA 2021. 10. 11. 18:18
Spring Data JPA로 쿼리를 생성하는 방법들을 알아보겠습니다. • 메소드 이름으로 쿼리 생성 쿼리 메소드는 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메소드를 작성하면 원하는 쿼리를 실행할 수 있습니다. 쿼리 메소드를 이용할 때 가장 많이 사용하는 문법으로 find를 사용해보겠습니다. 엔티티의 이름은 생략이 가능합니다. find + (엔티티 이름) + By + 변수 이름 Spring Data JPA 기반 ItemRepository ItemRepository 간단한 테스트 1. Item 엔티티 살펴보기 2. 쿼리 메소드 사용(간단하게 코드로 작성) • 상품명 조회 List itemList = itemRepository.findByItemNm("AAA"); //상품명이 AAA인 것..
-
JPA(Java Persistence API)동작 방식SPRING/JPA 2021. 10. 10. 22:57
JPA에서 가장 중요한 2가지 1. 객체와 관계형 데이터베이스 매핑하기 2. 영속성 컨텍스트 엔티티 매니저 팩토리와 엔티티 매니저 - 엔티티(Entity) : 데이터베이스의 테이블에 대응하는 클래스라고 생각하면 됩니다. - 엔티티 매니저 : 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공합니다. 내부적으로 데이터베이스 커넥션을 사용해서 데이터베이스에 접근합니다. - 엔티니 매니저 팩토리 : 엔티티 매니저 인스턴스를 관리하는 주체입니다. 애플리케이션 실행 시 한 개만 만들어지며 자용자로부터 요청이 오면 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성합니다. @Entity가 붙은 클래스는 JPA에서 관리합니다. @Id: 데이터베이스 PK와 매핑 엔티티 생명주기 엔티티의 생명주기 • 비영속 ..
-
JPA(Java Persistence API)의 시작SPRING/JPA 2021. 10. 10. 20:21
JPA란? JPA는 자바 ORM 기술에 대한 API 표준이다. ORM이란 'Object Relational Mapping'의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말합니다. 그렇다면 왜? ORM 기술이 나왔는지 알아보겠습니다. 상품 데이터를 관리하는 Item 클래스가 있다고 가정하고, 상품 데이터를 관계형 데이터베이스에서 관리하기 위해 우리는 SQL문을 사용합니다. 문제 1) SQL 중심 개발의 문제 개발자가 CRUD문을 작성해서 객체를 관계형 데이터베이스에 넣어주고 가져오는 작업을 합니다.( 자바 객체를 SQL을 통해 데이터베이스에 관리하게 하고, 데이터베이스에 저장된 데이터를 자바 애플리케이션에서 사용하려면 SQL을 통해 다시 자바 객체로 변환) - '개발자가 직접 SQL을 매핑하는 역..