У меня есть следующий класс:Hibernate FetchMode ВЫБРАТЬ против РЕГИСТРИРУЙТЕСЬ
@Entity
public class TestContentElementResponse
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;
@OneToMany(mappedBy = "testContentElementResponse", cascade = CascadeType.ALL, orphanRemoval = false)
private Set<ResponseAttribute> associatedResponseAttributes = new HashSet<ResponseAttribute>();
@ManyToOne
@JoinColumn(name = "userfulltestId", referencedColumnName = "id", nullable = false)
private UserFullTest userFullTest;
@ManyToOne
@JoinColumn(name = "testContentElementId", referencedColumnName = "id", nullable = false)
private TestContentElement testContentElement;
@OneToOne(cascade = CascadeType.ALL)
private TestContentElementScore testContentElementScore;
@ManyToOne
@JoinColumn(name = "userId", referencedColumnName = "id", nullable = false)
private User user;
TestContentElementResponse.class представляет один ответ пользователя в тесте. Один тест может быть 30 вопросов, поэтому 30 ответов на пользователя.
Теперь я хочу вызвать ALL TestContentElementResponse для пользователя ONE (общий идентификатор UserFullTestId) и ALL ResponseAttributes для каждого TestContentElementResponse.
Я могу сделать это с помощью запроса критериев, но я не уверен, использовать ли SELECT или JOIN FetchMode. Я понимаю, что JOIN сделает один большой вызов в базе данных, и SELECT совершит много быстрых вызовов. Однако я не знаю, какие факторы помогают мне решить, какой метод оптимален.
(Конечно, я буду запускать тесты, но это будет только ответить, какой метод является оптимальным, это не объясняет, почему)
Помощь больш была бы оценена