package org.raidenjpa.benchmark;
import java.util.Arrays;
import java.util.HashSet;
import javax.persistence.Query;
import org.junit.Before;
import org.junit.Test;
import org.raidenjpa.benchmark.entity.E1;
import org.raidenjpa.benchmark.entity.E2;
import org.raidenjpa.benchmark.entity.E20;
import org.raidenjpa.util.EntityManagerUtil;
public class BenchmarkTest extends AbstractTestCase {
@Before
public void setUp() {
super.setUp();
ec20(200);
es1(500);
es2(100);
}
@Test
public void test() {
EntityManagerUtil.em().createQuery("SELECT e1 FROM E1 e1 ORDER BY e1.a desc");
}
@Test
public void test2() {
StringBuilder jpql = new StringBuilder();
jpql.append("SELECT e1 FROM E1 e1 ");
jpql.append(" INNER JOIN FETCH e1.e2 e2");
jpql.append(" INNER JOIN FETCH e2.e20");
EntityManagerUtil.em().createQuery(jpql.toString());
}
@Test
public void test3() {
EntityManagerUtil.em().createQuery("SELECT e1 FROM E1 e1 INNER JOIN FETCH e1.e2");
}
@Test
public void test4() {
EntityManagerUtil.em().createQuery("SELECT e1 FROM E1 e1 INNER JOIN FETCH e1.e2");
}
@Test
public void test5() {
EntityManagerUtil.em().createQuery("SELECT e1 FROM E1 e1 INNER JOIN FETCH e1.e2");
}
@Test
public void test6() {
EntityManagerUtil.em().createQuery("SELECT e1 FROM E1 e1 INNER JOIN FETCH e1.e2");
}
private void ec20(int number) {
for (int i = 0; i < number; i++) {
EntityManagerUtil.mergeAndCommit(new E20());
}
}
private void es2(int number) {
for (int i = 0; i < number; i++) {
E2 e2 = new E2();
E1 e1 = EntityManagerUtil.em().find(E1.class, 1l);
e2.setE1(e1);
Query query = EntityManagerUtil.em().createQuery("SELECT e20 FROM E20 e20");
query.setFirstResult(i);
query.setMaxResults(1);
E20 e20 = (E20) query.getSingleResult();
e2.setE20(new HashSet<E20>(Arrays.asList(e20)));
e2 = EntityManagerUtil.mergeAndCommit(e2);
EntityManagerUtil.em().find(E1.class, e2.getId());
}
}
private void es1(int number) {
for (int i = 0; i < number; i++) {
E1 e1 = new E1();
e1.setA("a" + i);
e1 = EntityManagerUtil.mergeAndCommit(e1);
EntityManagerUtil.em().find(E1.class, e1.getId());
}
}
}