mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-23 03:22:59 +00:00
Update tests for Autotune
This commit is contained in:
@@ -59,6 +59,13 @@
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.15.3-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.avaje</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
||||
@@ -1,28 +1,37 @@
|
||||
package org.tests.autofetch;
|
||||
|
||||
import io.ebean.DB;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Order;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MainAutoQueryTune1 {
|
||||
|
||||
// public static void main(String[] args) {
|
||||
//
|
||||
// ResetBasicData.reset();
|
||||
//
|
||||
// MainAutoQueryTune1 me = new MainAutoQueryTune1();
|
||||
// me.tuneJoin();
|
||||
// }
|
||||
//
|
||||
// private void tuneJoin() {
|
||||
// List<Order> list = Ebean.find(Order.class)
|
||||
// .setAutoTune(true)
|
||||
// .fetch("customer")
|
||||
// .where()
|
||||
// .eq("status", Order.Status.NEW)
|
||||
// .eq("customer.name", "Rob")
|
||||
// .order().asc("id")
|
||||
// .findList();
|
||||
//
|
||||
// for (Order order : list) {
|
||||
// order.getId();
|
||||
// order.getOrderDate();
|
||||
// }
|
||||
// }
|
||||
public static void main(String[] args) {
|
||||
MainAutoQueryTune1 me = new MainAutoQueryTune1();
|
||||
me.tuneJoin();
|
||||
}
|
||||
|
||||
@Test
|
||||
void tuneJoin() {
|
||||
TestData.load();
|
||||
|
||||
List<Order> list = DB.find(Order.class)
|
||||
.setAutoTune(true)
|
||||
//.fetch("customer")
|
||||
.where()
|
||||
.eq("status", Order.Status.NEW)
|
||||
.eq("customer.name", "Rob")
|
||||
.order().asc("id")
|
||||
.findList();
|
||||
|
||||
for (Order order : list) {
|
||||
order.getId();
|
||||
order.getOrderDate();
|
||||
order.getCustomer().getName();
|
||||
order.getCustomer().getNote();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package org.tests.autofetch;
|
||||
|
||||
import io.ebean.DB;
|
||||
import org.tests.model.basic.Address;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.Order;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class TestData {
|
||||
|
||||
static void load() {
|
||||
if (DB.find(Order.class).findCount() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var customer = new Customer("Rob");
|
||||
customer.setBillingAddress(new Address("l0", "city0"));
|
||||
DB.save(customer);
|
||||
|
||||
var order = new Order(customer);
|
||||
order.setOrderDate(LocalDate.now());
|
||||
DB.save(order);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,21 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name = "address")
|
||||
@Table(name = "o_address")
|
||||
public class Address extends BaseModel {
|
||||
|
||||
String line1;
|
||||
String line2;
|
||||
String city;
|
||||
|
||||
public Address(String line1, String city) {
|
||||
this.line1 = line1;
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
public String getLine1() {
|
||||
return line1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import io.ebean.annotation.NotNull;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
@@ -8,13 +11,17 @@ import javax.persistence.Table;
|
||||
@Table(name = "o_customer")
|
||||
public class Customer extends BaseModel {
|
||||
|
||||
String name;
|
||||
@NotNull String name;
|
||||
|
||||
String note;
|
||||
|
||||
@ManyToOne
|
||||
@ManyToOne(cascade = CascadeType.PERSIST)
|
||||
Address billingAddress;
|
||||
|
||||
public Customer(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -1,21 +1,10 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import io.ebean.Model;
|
||||
import io.ebean.annotation.WhenModified;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Version;
|
||||
import java.sql.Timestamp;
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Entity
|
||||
@Table(name = "orders")
|
||||
@Table(name = "o_order")
|
||||
public class Order extends BaseModel {
|
||||
|
||||
public enum Status {
|
||||
@@ -32,7 +21,11 @@ public class Order extends BaseModel {
|
||||
LocalDate orderDate;
|
||||
|
||||
@ManyToOne(cascade = CascadeType.PERSIST)
|
||||
Customer customer;
|
||||
final Customer customer;
|
||||
|
||||
public Order(Customer customer) {
|
||||
this.customer = customer;
|
||||
}
|
||||
|
||||
public Status getStatus() {
|
||||
return status;
|
||||
@@ -54,7 +47,4 @@ public class Order extends BaseModel {
|
||||
return customer;
|
||||
}
|
||||
|
||||
public void setCustomer(Customer customer) {
|
||||
this.customer = customer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,3 +9,9 @@ datasource.h2.url=jdbc:h2:mem:h2AutoTune
|
||||
datasource.pg.username=sa
|
||||
datasource.pg.password=
|
||||
datasource.pg.url=jdbc:h2:mem:h2AutoTune
|
||||
|
||||
ebean.autoTune.profiling=true
|
||||
ebean.maxCallStack=10
|
||||
|
||||
ebean.autoTune.queryTuning=true
|
||||
ebean.autoTune.queryTuningFile=autotune/my-autotune.xml
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<autotune xmlns="http://ebean-orm.github.io/xml/ns/autotune">
|
||||
<origin key="BmouL7.Bn_jgL.BNY1QD" beanType="org.tests.model.basic.Order" detail="select (orderDate) fetch customer (name,note)" original="">
|
||||
<callStack>org.tests.autofetch.MainAutoQueryTune1.tuneJoin(MainAutoQueryTune1.java:27)
|
||||
org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
|
||||
org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
|
||||
org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
|
||||
org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
|
||||
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
|
||||
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
|
||||
org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
|
||||
org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
|
||||
org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)</callStack>
|
||||
</origin>
|
||||
</autotune>
|
||||
@@ -12,10 +12,11 @@
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
<logger name="io.ebeaninternal" level="DEBUG"/>
|
||||
<logger name="io.ebean.docker" level="TRACE"/>
|
||||
<!-- <logger name="io.ebean.DDL" level="DEBUG"/>-->
|
||||
<!-- <logger name="io.ebean.SQL" level="TRACE"/>-->
|
||||
<logger name="io.ebean.SQL" level="TRACE"/>
|
||||
<!-- <logger name="io.ebean.TXN" level="TRACE"/>-->
|
||||
<!-- <logger name="io.ebean.SUM" level="TRACE"/>-->
|
||||
<logger name="io.ebean.SUM" level="TRACE"/>
|
||||
|
||||
</configuration>
|
||||
|
||||
Reference in New Issue
Block a user