Я пытаюсь определить, как эффективно находить / извлекать / загружать объекты с точки зрения: а) минимизации обращений к базе данных и б) поддержания максимально элегантного / простого кода (т.е. не пишу hql и т. Д.)
Предположим, у вас есть два объекта:
public class Foo {
Bar bar
String badge
}
public class Bar {
String name
}
У каждого Фу есть бар и значок. Также предположим, что все значки уникальны в баре. Таким образом, если у Foo есть значок "4565", то нет других Foo с таким же значком # И той же полосой.
Если у меня есть идентификатор бара, как я могу эффективно извлечь Foo без первого выбора Bar?
Я знаю, что могу сделать это:
Foo.findByBadgeAndBar("4565", Bar.findById("1"))
Но это, кажется, вызывает выбор в таблице Bar, а затем выбор в таблице Foo. Другими словами, мне нужно произвести Grails / Hibernate / GORM эквивалент следующего:
select * from foo where badge="4565" and bar_id="1"