스프링프레임워크/jpa
-
[JPA] @ElementCollection을 이용해서 Embeddable 타입의 Collection을 영속화스프링프레임워크/jpa 2021. 1. 29. 15:28
Embeddable 타입의 Collection 엔티티 클래스에서 Embeddable 타입의 Collection은 @ElementCollection을 사용해서 영속화 할 수 있습니다. Collection에 해당하는 클래스에는 @Embeddable 어노테이션을 반드시 붙여야 합니다. 엔티티 클래스와 Embeddable 타입의 클래스는 둘 사이를 매핑하는 새로운 테이블을 생성합니다. 해당 매핑 테이블에는 엔티티 클래스의 primary-key와 연결 된 foreign-key를 가지고 있습니다. 해당 매핑 테이블의 필드는 엔티티 클래스에 대한 foreign-key와 Embeddable 클래스의 필드들로 구성되어집니다. OneToMany와 유사하지만 대상이 Embeddable 클래스란 것이 다르다. 테스트를 위한 ..
-
[JPA] ID 참조와 조인 테이블을 이용한 단방향 M:N 매핑스프링프레임워크/jpa 2021. 1. 14. 17:19
이번 포스트에서는 ID 참조를 이용해서 엔티티 간 단방향 M:N 연관 관계를 해결하는 방법을 알아보도록 하겠습니다. Product와 Category의 관계가 아래와 같다고 가정합니다. Product와 Category는 M:N 연관관계이다. 특정 Category에 있는 Product 정보 조회 기능이 필요하다. 특정 Product가 속해 있는 Category 정보 조회 기능은 필요없다. 위와 같은 가정하에서는 Product와 Category는 양방향 매핑 관계를 가질 필요가 없게되고, 단방향 매핑을 통해서 요구 사항을 만족 시킬 수 있게 됩니다. 이 때 엔티티간에 연관 관계를 맺을 수도 있지만 아래와 같이 ID 참조를 이용해서 더 간편하게 표현 할 수 있습니다. 우선 Product 클래스를 아래와 같이 구..
-
[JPA] 영속성 컨텍스트스프링프레임워크/jpa 2021. 1. 13. 23:24
EntityManagerFactory Client의 요청이 올 때마다 EntityManager를 생성합니다. EntityManager 데이터베이스 Connection을 사용해서 DB 처리를 진행합니다. Entity의 생명 주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 Entity가 관리되는 상태 EntityManager.persist(entity) 아직 DB에 저장되지 않고 이후 transaction을 commit한 후에 DB에 저장됩니다. 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 EntityManager em = emf.createEntityManager(..
-
[JPA] QueryDsl에서 Pageable 객체를 이용한 Sort 방법스프링프레임워크/jpa 2020. 9. 9. 12:45
우선 Order, Path, fieldName을 전달하면 OrderSpecifier 객체를 리턴하는 Util 클래스를 작성해서 Sort시 마다 사용할 수 있도록 한다. Path 파라미터는 compileQuerydsl 빌드를 통해서 생성된 Q타입 클래스의 객체이다. Sort의 대상이 되는 Q타입 클래스 객체를 전달한다. import com.querydsl.core.types.Order; import com.querydsl.core.types.OrderSpecifier; import com.querydsl.core.types.Path; import com.querydsl.core.types.dsl.Expressions; public class QueryDslUtil { public static OrderSp..