package org.tests.query.lazy;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.basic.Customer;
import org.tests.model.basic.Order;
import org.tests.model.basic.OrderDetail;
import org.tests.model.basic.Product;
import org.tests.model.basic.ResetBasicData;
import org.junit.Test;
import java.util.List;
public class TestQueryDefaultBatchSize extends BaseTestCase {
@Test
public void test_findEach() {
ResetBasicData.reset();
Ebean.find(Order.class)
.setLazyLoadBatchSize(2)
.findEach(bean -> doStuff(bean));
}
@Test
public void test_findEach_withFetch() {
ResetBasicData.reset();
Ebean.find(Order.class)
.fetch("details", "id")
.fetch("details.product", "sku")
.fetch("customer")
.fetch("customer.contacts")
.setLazyLoadBatchSize(2)
.findEach(bean -> doStuff(bean));
}
@Test
public void test_findList() {
ResetBasicData.reset();
List<Order> orders =
Ebean.find(Order.class)
.setLazyLoadBatchSize(2)
.findList();
for (Order order : orders) {
doStuff(order);
}
}
@Test
public void test_findList_withFetch() {
ResetBasicData.reset();
List<Order> orders =
Ebean.find(Order.class)
.fetch("details", "id")
.fetch("details.product", "sku")
.fetch("customer")
.fetch("customer.contacts")
.setLazyLoadBatchSize(2)
.findList();
for (Order order : orders) {
doStuff(order);
}
}
@Test
public void test_findList_lazyMany() {
ResetBasicData.reset();
List<Order> orders = Ebean.find(Order.class)
.setLazyLoadBatchSize(100)
.findList();
for (Order order : orders) {
List<OrderDetail> details = order.getDetails();
details.size();
for (OrderDetail detail : details) {
Product product = detail.getProduct();
product.getSku();
}
}
}
private void doStuff(Order order) {
// invoke lazy loading
Customer customer = order.getCustomer();
order.getId();
customer.getName();
customer.getContacts().size();
order.getDetails().size();
}
}