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