[SPRING] 게으른 One-To-One Spring JPA 및 "동적"JSON 작성
SPRING게으른 One-To-One Spring JPA 및 "동적"JSON 작성
저는 Spring Boot를 사용하여 상대적으로 큰 프로젝트를 개발하고 있습니다. 일반적인 방법으로는 꽤 만족하지만, 제 마음 속에는 문제가되지 않아야하는 몇 가지 문제가 있습니다.
나는 언젠가는이 문제 중 하나를 겪었을 수도있는 누군가로부터 몇 가지 지시를 찾고 있습니다. 왜냐하면 그것이 내 마음 속에서 그렇게 힘들어해서는 안되는 문제를 해결할 수 없기 때문에 나를 죽이고 있기 때문입니다.
1 편집
@OneToOne 어노테이션에 optional = false를 추가하여 @snovelli가 제안한대로 OneToOne 관계의 열망한로드를 해결하려고 시도했습니다. 예:
@OneToOne(optional=false, fetch = FetchType.LAZY)
public UserProfile getUserProfile(){ ... }
해결법
-
==============================
1.조인 열이 일대일 연결의 상위가 매핑 된 테이블에 없으면 연결을 지연시킬 수 없습니다. 이유는 JPA 공급자가 프록시를 만들지 여부를 결정할 수 없으므로 나중에 액세스 할 때 개체를로드하거나 null 값을 그대로 남겨 둘 수 있기 때문입니다.
조인 열이 일대일 연결의 상위가 매핑 된 테이블에 없으면 연결을 지연시킬 수 없습니다. 이유는 JPA 공급자가 프록시를 만들지 여부를 결정할 수 없으므로 나중에 액세스 할 때 개체를로드하거나 null 값을 그대로 남겨 둘 수 있기 때문입니다.
연결이 선택 사항이 아니더라도 JPA 제공자는 연관된 엔티티 인스턴스의 ID를 판별하여 프록시에 저장해야합니다. 따라서 어쨌든 관련 테이블로 이동해야합니다.
솔루션 :
-
==============================
2.'동적'JSON : DTO를 사용하십시오.
'동적'JSON : DTO를 사용하십시오.
이렇게하면 결과 JSON을 소비하는 클라이언트의 요구에 맞게 직렬화 할 객체를 조정할 수 있다는 장점이 있습니다. 또한, 도메인 모델 (Hibernate 엔티티)은 JSON (de) 직렬화 로직에서 분리되어, 두 가지를 독립적으로 진화시킬 수 있습니다.
-
==============================
3.@OneToOne에 관해서 : 당신은 DB에 대한 데이터의 양 또는 다수의 쿼리에 더 많은 관심을 갖고 있습니까?
@OneToOne에 관해서 : 당신은 DB에 대한 데이터의 양 또는 다수의 쿼리에 더 많은 관심을 갖고 있습니까?
이전의 경우 (Spring Roo를 사용할 때 가능하다면) @ManyToOne 관계 모델링 (일대일은 many-to-one의 특별한 경우입니다. 그렇지 않은 경우)을 사용하여 문제를 해결할 수 있습니다.
후자의 경우 @Embeddable을 사용하여 User와 같은 엔티티를 여러 클래스로 분해하면서 데이터를 DB에 유지할 수 있으므로 하나의 쿼리 만 가져올 수 있습니다.
from https://stackoverflow.com/questions/36061550/lazy-one-to-one-spring-jpa-and-building-dynamic-json by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 누락 된 클래스 org.springframework.objenesis.ObjenesisStd (0) | 2019.01.23 |
---|---|
[SPRING] Spring Boot - 독립 실행 형 바람둥이가있는 사용자 정의 404 페이지 (0) | 2019.01.23 |
[SPRING] 리포지토리 리소스에 다중 세그먼트 경로를 사용하도록 Spring 데이터 REST를 사용자 정의하는 방법은 무엇입니까? (0) | 2019.01.23 |
[SPRING] 스프링 부트로 자동으로 https로 리디렉션하는 방법 (0) | 2019.01.23 |
[SPRING] Spring과 Abstract 클래스 - 추상 클래스에서 속성 삽입 (0) | 2019.01.23 |