다음 문제가 있습니다. "역할"과 다 대다 관계가있는 "사용자"엔티티가 있습니다. 문제는 "역할"이 열거되고 (항상 5 개가 있으므로) 사용자를 가져올 때마다 가져 오는 것이므로 (거의 변경되지 않는 것처럼) 불필요한 것으로 여겨 질 때마다 가져 오는 것입니다. 나는 어떻게 든 기억을 유지하고 내가 그녀를 데리고 올 때마다 그 역할을 사용자에게 붙이고 싶습니다. hibernate는 2 레벨 캐시를 사용할 수 있으므로 필요한 경우이 기능을 사용할 수 있습니다. 누구에게도 해결책이 있습니까? 당신이 당신의 데이터 모델을 변경 테이블 역할을 삭제하고 사용자에게 외래 키와 간단한 대일 테이블로 다 대다 테이블을 변환 할 수 있습니다 경우 사전최대 절전 모드 및 캐시가있는 열거 형 값
답변
에서
감사합니다 열 (varchar 또는 숫자로 역할을 들고 있지만 유지하기가 쉽기 때문에 varchar를 사용하는 것이 좋습니다). 당신이 역할 테이블을 삭제하지 않는 경우는 EnumType.ORDINAL
매핑을 사용하여 한 역할 아이디의 0 ~ 4이기 때문에이 작업을 수행하는 것이 가능하다는 것을
@Entity
public class UserRole {
@ManyToOne
private User user;
@Column
@Enumerated(EnumType.STRING) // depends if column is varchar or number
private Role role;
}
public enum Role { ROLE1, ROLE2, ROLE3, ROLE4, ROLE5 }
주의 사항 : 그럼 당신은 다음과 같은이 테이블을 매핑 할 수 있습니다 (기본값). 1에서 5이면 Role
열거 형 시작 부분에 모호한 역할을 추가하십시오.
하지만 그것은 효과적으로 OneToMany 관계를 만들 것입니다. 그래서 항목은 ("User1", "Role1") ("User1", "Role2") ("User2", "Role1")처럼 보일 것입니다. – ShinySpiderdude
물론이 요구 사항이 있으므로 단일 사용자에게 여러 역할을 할당하면 일대 다 관계를 피할 수 없습니다. 매번 캐싱하지 않도록 캐싱을 구성해야하지만이 솔루션을 사용하면 요청한 것처럼 보이는 역할을 모두 가져올 필요가 없습니다. –
- 1. 열거 형 최대 절전 모드 3
- 2. 열거 형 - 수량 - 최대 절전 모드
- 3. 최대 절전 모드 기준 열거
- 4. 최대 절전 모드, 조건 API, 열거 형 필드 정렬 임의로
- 5. JPA와 열거 형 값 집합
- 6. 최대 절전 모드 : 및 "값" "키"
- 7. 및 최대 절전 모드
- 8. 최대 절전 모드 대체 값
- 9. 값 - 최대 절전 모드 JPA
- 10. 최대 절전 모드 중복 값
- 11. 최대 절전 모드 Projections.sum() 열거 형을 통해
- 12. 최대 절전 모드 코어 및 최대 절전 모드 - 주석 -
- 13. DAO에서 최대 절전 모드 및 최대 절전 모드 템플릿
- 14. 최대 절전 모드 및 직렬화
- 15. Netbeans 및 최대 절전 모드
- 16. EntityManager 및 최대 절전 모드
- 17. jTable 및 최대 절전 모드
- 18. 저장 및 최대 절전 모드
- 19. 최대 절전 모드 및 잠금
- 20. 최대 절전 모드 및 ehcache
- 21. 최대 절전 모드 및 데이터베이스
- 22. BoneCP 및 최대 절전 모드
- 23. 최대 절전 모드 및 날짜
- 24. 까다로운 최대 절전 모드
- 25. 최대 절전 모드 batch_size 최상의 값
- 26. 최대 절전 모드
- 27. 최대 절전 모드 기준
- 28. 열거 형 및 해당 값
- 29. 최대 절전 모드. 제한 및 최대 날짜
- 30. 최대 절전 모드 - 각각 EnumSet
대답은 질문에 맞습니까? 아닙니다. 2 차 레벨 캐시를 사용하십시오. (5 행의 테이블에서 ID로 역할을 얻는 것이 이미 매우 빠르다는 점을 감안할 때 이것이 중요한 차이를 만들지는 모르겠다.) –
또한 역할과 사용자 간의 연결을 캐시 할 수 있습니다. – benzonico