mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#919 - io.ebean package initial
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package io.ebeaninternal.server.transaction;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.Transaction;
|
||||
import io.ebean.cache.ServerCache;
|
||||
import io.ebean.cache.ServerCacheManager;
|
||||
import org.tests.model.basic.Contact;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.EBasic;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class JdbcTransactionTest {
|
||||
|
||||
@Test
|
||||
public void isSkipCache() throws Exception {
|
||||
|
||||
Transaction transaction = Ebean.beginTransaction();
|
||||
try {
|
||||
// implicitly skip false due to query only at this point
|
||||
assertThat(transaction.isSkipCache()).isFalse();
|
||||
|
||||
EBasic basic = new EBasic("b1");
|
||||
Ebean.save(basic);
|
||||
|
||||
// implicitly skip true due to save
|
||||
assertThat(transaction.isSkipCache()).isTrue();
|
||||
|
||||
Customer.find.byId(1);
|
||||
|
||||
// explicit control
|
||||
transaction.setSkipCache(false);
|
||||
assertThat(transaction.isSkipCache()).isFalse();
|
||||
|
||||
transaction.setSkipCache(true);
|
||||
assertThat(transaction.isSkipCache()).isTrue();
|
||||
|
||||
} finally {
|
||||
transaction.end();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void skipCacheAfterSave() throws Exception {
|
||||
|
||||
ServerCacheManager cacheManager = Ebean.getDefaultServer().getServerCacheManager();
|
||||
ServerCache customerBeanCache = cacheManager.getBeanCache(Customer.class);
|
||||
ServerCache contactNatKeyCache = cacheManager.getNaturalKeyCache(Contact.class);
|
||||
|
||||
Transaction transaction = Ebean.beginTransaction();
|
||||
try {
|
||||
customerBeanCache.getStatistics(true);
|
||||
contactNatKeyCache.getStatistics(true);
|
||||
|
||||
Customer.find.byId(19898989);
|
||||
Ebean.find(Contact.class).where().eq("email", "junk@foo.com").findUnique();
|
||||
|
||||
assertThat(customerBeanCache.getStatistics(true).getMissCount()).isEqualTo(1);
|
||||
assertThat(contactNatKeyCache.getStatistics(true).getMissCount()).isEqualTo(1);
|
||||
|
||||
EBasic basic = new EBasic("b1");
|
||||
Ebean.save(basic);
|
||||
|
||||
// these don't hit L2 cache due to the save of b1
|
||||
Customer.find.byId(29898989);
|
||||
Ebean.find(Contact.class).where().eq("email", "junk2@foo.com").findUnique();
|
||||
|
||||
assertThat(customerBeanCache.getStatistics(true).getMissCount()).isEqualTo(0);
|
||||
assertThat(contactNatKeyCache.getStatistics(true).getMissCount()).isEqualTo(0);
|
||||
|
||||
} finally {
|
||||
transaction.end();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user