diff --git a/README.md b/README.md
index 1bdc731..375226d 100644
--- a/README.md
+++ b/README.md
@@ -13,8 +13,8 @@ L2C can be used for SessionFactory objects in Hibernate.
## Dependencies
-- Include `hibernate-jcache` dependency in your program. The version must be the same as
-the `hibernate-core` version.
+- Include `hibernate-jcache` dependency in your program. The version must be the same as
+`hibernate-core` version.
In `pom.xml`:
```xml
diff --git a/pom.xml b/pom.xml
index fc3d068..a1d1746 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,17 +14,21 @@
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- none
- true
- false
-
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.1
+
+ none
+ true
+ false
+ 1
+
+
+
+
@@ -44,25 +48,16 @@
hibernate-jcache
${hibernate.version}
-
- mysql
- mysql-connector-java
- 8.0.13
-
com.hazelcast
hazelcast
${hazelcast.version}
-
com.hazelcast
hazelcast-hibernate53
1.3.2
-
-
-
junit
junit
@@ -70,13 +65,17 @@
test
true
-
com.h2database
h2
1.4.194
-
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 2.19.1
+ test
+
diff --git a/src/main/java/jcache/L2C/CollectionCache.java b/src/main/java/jcache/L2C/CollectionCache.java
index 1f78309..ec0ae4f 100644
--- a/src/main/java/jcache/L2C/CollectionCache.java
+++ b/src/main/java/jcache/L2C/CollectionCache.java
@@ -1,15 +1,12 @@
package jcache.L2C;
import com.hazelcast.core.Hazelcast;
+import jcache.L2C.entity.Item;
+import jcache.L2C.entity.SubItem;
import jcache.L2C.util.HibernateUtil;
-import jcache.L2C.entity.Department;
-import jcache.L2C.entity.Employee;
import org.hibernate.Session;
import org.hibernate.Transaction;
-import java.util.ArrayList;
-import java.util.List;
-
public class CollectionCache {
public static void main(String[] args){
@@ -17,37 +14,34 @@ public static void main(String[] args){
initializeDatabase();
Session session1, session2;
- Transaction tx1, tx2;
+ Item item;
+
- // Get Department from DB.
- // This call will not get employees list.
- // It has to be called explicitly.
+ // Get Item from DB.
+ // Collection cache miss & put are expected
session1 = HibernateUtil.getSession();
- tx1 = session1.getTransaction();
- tx1.begin();
- Department department = session1.get(Department.class, 1);
- System.out.println("Department :" + department.getName());
- // Call collection for cached department. Cache miss is expected.
- List employees=department.getEmployees();
- for (Employee employee : employees) {
- System.out.println("\tEmployee Name : " + employee.getName());
- }
+ session1.beginTransaction();
+ item = session1.get(Item.class, 1);
+
+ // Since fetch type for the collection is Lazy, force it to be fetched.
+ for(SubItem i : item.getSubItems()){
+ System.out.println(i);
+ };
session1.close();
+ HibernateUtil.printCollectionCacheStats();
- //Get Department again. Cache hit is expected.
+ //Get Department again. Collection cache hit is expected.
session2 = HibernateUtil.getSession();
- tx2 = session2.getTransaction();
- tx2.begin();
- department = session2.get(Department.class, 1);
- System.out.println("Department :" + department.getName());
- // Call collection for cached department. Cache hit is expected since
- // it has already cached in session1.
- // No SQL queries must be shown on the log.
- employees = department.getEmployees();
- for (Employee employee : employees) {
- System.out.println("\tEmployee Name : " + employee.getName());
- }
+ session2.beginTransaction();
+ item = session2.get(Item.class, 1);
+
+ // Since fetch type for the collection is Lazy, force it to be fetched.
+ for(SubItem i : item.getSubItems()){
+ System.out.println(i);
+ };
session2.close();
+ HibernateUtil.printCollectionCacheStats();
+
HibernateUtil.closeFactory();
Hazelcast.shutdownAll();
@@ -55,24 +49,21 @@ public static void main(String[] args){
private static void initializeDatabase(){
- Session session;
- Transaction transaction;
+ Session session = HibernateUtil.getSession();
+
+ Item item1 = new Item("item-1",1);
+
+
+ SubItem subItem1 = new SubItem(1,"subitem-1",item1);
+ SubItem subItem2 = new SubItem(2,"subitem-2",item1);
- Department dpt = new Department("Department 1", null);
+ item1.addSubItem(subItem1).addSubItem(subItem2);
- Employee employee1 = new Employee("Employee 1", dpt);
- Employee employee2 = new Employee("Employee 2", dpt);
+ Transaction tx = session.beginTransaction();
- List employeeList = new ArrayList();
- employeeList.add(employee1);
- employeeList.add(employee2);
- dpt.setEmployees(employeeList);
+ session.save(item1);
- session = HibernateUtil.getSession();
- transaction = session.getTransaction();
- transaction.begin();
- session.save(dpt);
- transaction.commit();
+ tx.commit();
session.close();
HibernateUtil.evictAllRegions();
}
diff --git a/src/main/java/jcache/L2C/EntityCache.java b/src/main/java/jcache/L2C/EntityCache.java
index 62ef41e..4ef8b89 100644
--- a/src/main/java/jcache/L2C/EntityCache.java
+++ b/src/main/java/jcache/L2C/EntityCache.java
@@ -11,53 +11,48 @@ public class EntityCache {
public static void main(String[] args){
Session session1, session2, session3, session4;
- Transaction tx1, tx2, tx3, tx4;
- Item item;
+ Transaction tx1;
-
- // Store an hazelcast.hibernate.jcache.Entity.Item with id = 1
+ // Store an hazelcast.hibernate.jcache.L2C.Entity.Item with id = 1
// L2C put is expected
session1 = HibernateUtil.getSession();
tx1 = session1.getTransaction();
tx1.begin();
- session1.save(new Item(1,"New Hazelcast Item",12345L));
+ session1.save(new Item("item-1",1));
tx1.commit();
session1.close();
+
+ // Evict cache and clear statistics
HibernateUtil.evictAllRegions();
- // Get recently stored value
- // Data is expected to be fetched from L2 Cache, not from database.
- // L2C hit is expected
+ // Get recently stored value. Since the cache is evicted,
+ // data is expected to be fetched from DB, not from the cache.
+ // L2C miss & put are expected
session2 = HibernateUtil.getSession();
- tx2 = session2.getTransaction();
- tx2.begin();
- item = session2.get(Item.class,1);
+ session2.beginTransaction();
+ session2.get(Item.class,1);
session2.close();
- System.out.println("Item fetched: "+ item);
+ HibernateUtil.printStats();
// Get last accessed data from another session.
// Data is expected to be fetched from L2 Cache, not from database.
// L2C hit is expected
session3 = HibernateUtil.getSession();
- tx3 = session3.getTransaction();
- tx3.begin();
- item = session3.get(Item.class,1);
- System.out.println("Item fetched: "+ item);
- tx3.commit();
+ session3.beginTransaction();
+ session3.get(Item.class,1);
session3.close();
+ HibernateUtil.printStats();
- // Evict the cache
+ // Evict the cache and clear statistics
HibernateUtil.evictAllRegions();
// Data is expected to be fetched from database, not from L2C.
// L2C miss & put are expected
session4 = HibernateUtil.getSession();
- tx4 = session4.getTransaction();
- tx4.begin();
- item = session4.get(Item.class,1);
- System.out.println("Item fetched: "+ item);
- tx4.commit();
+ session4.beginTransaction();;
+ session4.get(Item.class,1);
session4.close();
+ HibernateUtil.printStats();
HibernateUtil.closeFactory();
Hazelcast.shutdownAll();
diff --git a/src/main/java/jcache/L2C/QueryCache.java b/src/main/java/jcache/L2C/QueryCache.java
index 38a038c..dae8fc2 100644
--- a/src/main/java/jcache/L2C/QueryCache.java
+++ b/src/main/java/jcache/L2C/QueryCache.java
@@ -1,8 +1,8 @@
package jcache.L2C;
import com.hazelcast.core.Hazelcast;
-import jcache.L2C.util.HibernateUtil;
import jcache.L2C.entity.Item;
+import jcache.L2C.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.List;
@@ -18,55 +18,48 @@ public static void main(String[] args){
Session session1, session2, session3, session4;
Transaction tx1;
- List- queryResults;
// Store Items with id = 100,101 and 102
- // L2C miss and put are expected
session1 = HibernateUtil.getSession();
tx1 = session1.getTransaction();
tx1.begin();
- session1.save(new Item(100,"New Hazelcast Item-0",12345L));
- session1.save(new Item(101,"New Hazelcast Item-1",12345L));
- session1.save(new Item(102,"New Hazelcast Item-2",12345L));
+ session1.save(new Item("New Hazelcast Item-0",100));
+ session1.save(new Item("New Hazelcast Item-1",101));
+ session1.save(new Item("New Hazelcast Item-2",102));
tx1.commit();
session1.close();
+ // Evict cache and clear statistics
HibernateUtil.evictAllRegions();
// Get recently stored values via query.
// Data is expected to be fetched from database, not from L2C since evicted.
- // QueryCache miss is expected
+ // QueryCache miss & put are expected
session2 = HibernateUtil.getSession();
- queryResults = executeQuery(QUERY_STRING,session2);
- printList(queryResults);
+ executeQuery(QUERY_STRING,session2);
session2.close();
+ HibernateUtil.printQueryCacheStats();
// Execute last executed query again from another session.
// Data is expected to be fetched from query Cache, not from database.
// QueryCache hit is expected
session3 = HibernateUtil.getSession();
- queryResults = executeQuery(QUERY_STRING,session3);
- printList(queryResults);
+ executeQuery(QUERY_STRING,session3);
session3.close();
+ HibernateUtil.printQueryCacheStats();
- // Execute last executed query again from another session.
- // Data is expected to be fetched from query Cache, not from database.
- // QueryCache hit is expected
+ // Execute last different query.
+ // QueryCache miss & put are expected
session4 = HibernateUtil.getSession();
- queryResults = executeQuery(QUERY_STRING2,session4);
- printList(queryResults);
+ executeQuery(QUERY_STRING2,session4);
session4.close();
+ HibernateUtil.printQueryCacheStats();
+
+ // Tear down
HibernateUtil.closeFactory();
Hazelcast.shutdownAll();
}
- private static void printList(List
- list){
- System.out.println("Items fetched: ");
- for(Item i : list) {
- System.out.println(i);
- }
- }
-
private static List
- executeQuery(String query, Session session){
Transaction tx;
tx = session.getTransaction();
diff --git a/src/main/java/jcache/L2C/entity/Department.java b/src/main/java/jcache/L2C/entity/Department.java
deleted file mode 100644
index d941fb4..0000000
--- a/src/main/java/jcache/L2C/entity/Department.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package jcache.L2C.entity;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.persistence.*;
-
-import org.hibernate.annotations.Cache;
-import org.hibernate.annotations.CacheConcurrencyStrategy;
-
-@Entity
-@Table(name = "DEPARTMENT")
-@Cache(region = "Dpt-Entity-Cache",usage = CacheConcurrencyStrategy.READ_WRITE)
-public class Department {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "DPT_ID")
- private int id;
-
- @Column(name = "NAME", nullable = false, unique = true)
- private String name;
-
-
- @OneToMany(cascade = CascadeType.ALL, mappedBy = "department")
- @Cache(region = "Emp-Collection-Cache",usage = CacheConcurrencyStrategy.READ_WRITE)
- private List employees = new ArrayList();
-
- public Department() {}
-
- public Department(String name, List employees) {
- this.name = name;
- this.employees = employees;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public List getEmployees() {
- return employees;
- }
-
- public void setEmployees(List employees) {
- this.employees = employees;
- }
-}
diff --git a/src/main/java/jcache/L2C/entity/Employee.java b/src/main/java/jcache/L2C/entity/Employee.java
deleted file mode 100644
index 388e454..0000000
--- a/src/main/java/jcache/L2C/entity/Employee.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package jcache.L2C.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-import org.hibernate.annotations.Cache;
-import org.hibernate.annotations.CacheConcurrencyStrategy;
-
-@Entity
-@Table(name = "EMPLOYEE")
-@Cache(region = "Emp-Entity-Cache",usage = CacheConcurrencyStrategy.READ_WRITE)
-public class Employee {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "EMP_ID")
- private int id;
-
- @Column(name = "NAME", nullable = false)
- private String name;
-
- @ManyToOne
- @JoinColumn(name = "DPT_ID")
- private Department department;
-
- public Employee() { }
-
- public Employee(String name, Department department) {
- this.name = name;
- this.department = department;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Department getDepartment() {
- return department;
- }
-
- public void setDepartment(Department department) {
- this.department = department;
- }
-}
diff --git a/src/main/java/jcache/L2C/entity/Item.java b/src/main/java/jcache/L2C/entity/Item.java
index 998ccc4..913e799 100644
--- a/src/main/java/jcache/L2C/entity/Item.java
+++ b/src/main/java/jcache/L2C/entity/Item.java
@@ -1,22 +1,50 @@
package jcache.L2C.entity;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@Cache(region = "Item-Cache",usage = CacheConcurrencyStrategy.READ_WRITE)
public class Item {
+ @Id
+ @Column(name = "ITEM_ID")
private int id;
+ @Column(name = "ITEM_NAME", nullable = false)
private String name;
- private long price;
+ @OneToMany(cascade = CascadeType.ALL, mappedBy = "item")
+ @Cache(region = "SubItems-Collection-Cache",usage = CacheConcurrencyStrategy.READ_WRITE)
+ private List subItems = new ArrayList();
- public Item() {
+ public List getSubItems() {
+ return subItems;
}
- public Item(int id, String name, long price) {
- this.id = id;
+ public void setSubItems(List subItems) {
+ this.subItems = subItems;
+
+ }
+
+ public Item(String name, int id) {
this.name = name;
- this.price = price;
+ this.id = id;
+ }
+
+ public Item() {
}
+ public Item addSubItem(SubItem s){
+ this.subItems.add(s);
+ return this;
+ }
+
+
public int getId() {
return id;
}
@@ -32,22 +60,4 @@ public String getName() {
public void setName(String name) {
this.name = name;
}
-
- public long getPrice() {
- return price;
- }
-
-
- public void setPrice(long price) {
- this.price = price;
- }
-
- @Override
- public String toString() {
- return "jcache.L2C.Entity.Item{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", price=" + price +
- '}';
- }
}
diff --git a/src/main/java/jcache/L2C/entity/SubItem.java b/src/main/java/jcache/L2C/entity/SubItem.java
new file mode 100644
index 0000000..9610108
--- /dev/null
+++ b/src/main/java/jcache/L2C/entity/SubItem.java
@@ -0,0 +1,67 @@
+package jcache.L2C.entity;
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
+import javax.persistence.*;
+
+
+@Entity
+@Cache(region = "SubItem-Cache",usage = CacheConcurrencyStrategy.READ_WRITE)
+public class SubItem {
+
+ @Id
+ @Column(name = "SUBITEM_ID")
+ private int id;
+
+ @Column(name = "SUBITEM_NAME", nullable = false)
+ private String name;
+
+
+ @ManyToOne
+ @JoinColumn(name = "ITEM_ID")
+ private Item item;
+
+ public SubItem(int id, String name, Item item) {
+ this.id = id;
+ this.name = name;
+ this.item = item;
+ }
+
+ public Item getItem() {
+ return item;
+ }
+
+ public void setItem(Item item) {
+ this.item = item;
+ }
+
+ public SubItem() {
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ @Override
+ public String toString() {
+ return "SubItem{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ ", item=" + item +
+ '}';
+ }
+}
diff --git a/src/main/java/jcache/L2C/util/HibernateUtil.java b/src/main/java/jcache/L2C/util/HibernateUtil.java
index 5128234..dad9cb7 100644
--- a/src/main/java/jcache/L2C/util/HibernateUtil.java
+++ b/src/main/java/jcache/L2C/util/HibernateUtil.java
@@ -1,9 +1,11 @@
package jcache.L2C.util;
+import com.hazelcast.cache.CacheStatistics;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
+import org.hibernate.stat.CacheRegionStatistics;
import org.hibernate.stat.Statistics;
public class HibernateUtil {
@@ -31,6 +33,7 @@ public static Session getSession(){
public static void evictAllRegions(){
assert !sessionFactory.isClosed();
sessionFactory.getCache().evictAllRegions();
+ sessionFactory.getStatistics().clear();
}
public static void closeFactory(){
@@ -41,4 +44,25 @@ public static void closeFactory(){
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
+
+ public static void printStats(){
+ System.out.println("[L2C Hits]: " + sessionFactory.getStatistics().getSecondLevelCacheHitCount());
+ System.out.println("[L2C Miss]: " + sessionFactory.getStatistics().getSecondLevelCacheMissCount());
+ System.out.println("[L2C Put]: " + sessionFactory.getStatistics().getSecondLevelCachePutCount());
+ }
+
+ public static void printQueryCacheStats(){
+ System.out.println("[Query Cache Hits]: " + sessionFactory.getStatistics().getQueryCacheHitCount());
+ System.out.println("[Query Cache Miss]: " + sessionFactory.getStatistics().getQueryCacheMissCount());
+ System.out.println("[Query Cache Put]: " + sessionFactory.getStatistics().getQueryCachePutCount());
+ }
+
+ public static void printCollectionCacheStats(){
+ CacheRegionStatistics cs = HibernateUtil.getSessionFactory().getStatistics().getCacheRegionStatistics("SubItems-Collection-Cache");
+ System.out.println("[Collection Cache Hits]: " + cs.getHitCount());
+ System.out.println("[Collection Cache Miss]: " + cs.getMissCount());
+ System.out.println("[Collection Cache Put]: " + cs.getPutCount());
+
+
+ }
}
diff --git a/src/main/resources/Item.hbm.xml b/src/main/resources/Item.hbm.xml
deleted file mode 100644
index 0f45038..0000000
--- a/src/main/resources/Item.hbm.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
- This class represents a sample hazelcast.hibernate.ss.entity.Item.
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index 88ec8c3..49bc051 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -10,14 +10,12 @@
hazelcast-region
- com.mysql.cj.jdbc.Driver
- jdbc:mysql://localhost:3306/hibernate_demo?createDatabaseIfNotExist=true
- root
- root
+ org.h2.Driver
+ jdbc:h2:~/sample
- org.hibernate.dialect.MySQL5Dialect
+ org.hibernate.dialect.H2Dialect
true
true
@@ -51,12 +49,11 @@
true
- create-drop
+ create
-
-
-
+
+
\ No newline at end of file
diff --git a/src/test/java/jcache/L2C/test/DatabaseEntitiesTest.java b/src/test/java/jcache/L2C/test/DatabaseEntitiesTest.java
index 72fae89..88d96e3 100644
--- a/src/test/java/jcache/L2C/test/DatabaseEntitiesTest.java
+++ b/src/test/java/jcache/L2C/test/DatabaseEntitiesTest.java
@@ -1,8 +1,8 @@
package jcache.L2C.test;
import jcache.L2C.test.base.HibernateTestBase;
-import jcache.L2C.test.entity.Item;
-import jcache.L2C.test.entity.SubItem;
+import jcache.L2C.entity.Item;
+import jcache.L2C.entity.SubItem;
import org.hibernate.Session;
import org.junit.Assert;
import org.junit.Test;
@@ -24,6 +24,7 @@ public void testItemsOnDatabaseStartUp(){
Session session = sfUtil.getSessionFactory().openSession();
+ @SuppressWarnings("unchecked")
List
- items = session.createQuery("SELECT i from Item i ").getResultList();
Assert.assertEquals(4,items.size());
@@ -41,6 +42,7 @@ public void testSubItemsOnDatabaseStartUp(){
Session session = sfUtil.getSessionFactory().openSession();
+ @SuppressWarnings("unchecked")
List subItems = session.createQuery("SELECT si from SubItem si ").getResultList();
Assert.assertEquals(10,subItems.size());
diff --git a/src/test/java/jcache/L2C/test/base/CollectionCacheTestBase.java b/src/test/java/jcache/L2C/test/base/CollectionCacheTestBase.java
index 3648084..358015c 100644
--- a/src/test/java/jcache/L2C/test/base/CollectionCacheTestBase.java
+++ b/src/test/java/jcache/L2C/test/base/CollectionCacheTestBase.java
@@ -1,7 +1,7 @@
package jcache.L2C.test.base;
-import jcache.L2C.test.entity.Item;
-import jcache.L2C.test.entity.SubItem;
+import jcache.L2C.entity.Item;
+import jcache.L2C.entity.SubItem;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Assert;
@@ -16,7 +16,7 @@ public CollectionCacheTestBase(boolean useHazelcastClient) {
}
@Test
- public void cacheCollectionsWhenOwnerObjectIsFetchedP2PTest(){
+ public void collectionCacheHitWhenOwnerIsFetchedTest(){
Item item;
@@ -46,7 +46,7 @@ public void cacheCollectionsWhenOwnerObjectIsFetchedP2PTest(){
}
@Test
- public void collectionCacheUpdateP2PTest(){
+ public void collectionCacheUpdateAndPutTest(){
Session session = sfUtil.getSessionFactory().openSession();
@@ -64,7 +64,6 @@ public void collectionCacheUpdateP2PTest(){
Assert.assertEquals(2,subItemCacheStats.getPutCount());
-
session = sfUtil.getSessionFactory().openSession();
item = session.get(Item.class,1);
diff --git a/src/test/java/jcache/L2C/test/base/EntityCacheTestBase.java b/src/test/java/jcache/L2C/test/base/EntityCacheTestBase.java
index 1f224f7..fc5af6c 100644
--- a/src/test/java/jcache/L2C/test/base/EntityCacheTestBase.java
+++ b/src/test/java/jcache/L2C/test/base/EntityCacheTestBase.java
@@ -1,7 +1,7 @@
package jcache.L2C.test.base;
-import jcache.L2C.test.entity.Item;
-import jcache.L2C.test.entity.SubItem;
+import jcache.L2C.entity.Item;
+import jcache.L2C.entity.SubItem;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Assert;
@@ -17,7 +17,7 @@ public EntityCacheTestBase(boolean useHazelcastClient) {
}
@Test
- public void missThenPutAndHitTest(){
+ public void entityCacheBasicMissPutAndHitTest(){
Session session = sfUtil.getSessionFactory().openSession();
@@ -50,7 +50,7 @@ public void missThenPutAndHitTest(){
}
@Test
- public void updateAndHitTest(){
+ public void entityCacheUpdatePutAndHitTest(){
Session session = sfUtil.getSessionFactory().openSession();
@@ -77,7 +77,7 @@ public void updateAndHitTest(){
}
@Test
- public void putCollectionEntitiesIntoOwnCacheTest(){
+ public void entityCachePutCollectionEntitiesIntoCacheTest(){
Session session = sfUtil.getSessionFactory().openSession();
@@ -101,7 +101,4 @@ public void putCollectionEntitiesIntoOwnCacheTest(){
}
-
-
-
}
diff --git a/src/test/java/jcache/L2C/test/base/HibernateTestBase.java b/src/test/java/jcache/L2C/test/base/HibernateTestBase.java
index 01ea7d7..7e8db1d 100644
--- a/src/test/java/jcache/L2C/test/base/HibernateTestBase.java
+++ b/src/test/java/jcache/L2C/test/base/HibernateTestBase.java
@@ -1,7 +1,7 @@
package jcache.L2C.test.base;
-import jcache.L2C.test.entity.Item;
-import jcache.L2C.test.entity.SubItem;
+import jcache.L2C.entity.Item;
+import jcache.L2C.entity.SubItem;
import jcache.L2C.test.util.SessionFactoryUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -62,8 +62,6 @@ public void insertEntries(){
item3.addSubItem(subItem4).addSubItem(subItem5).addSubItem(subItem6);
item4.addSubItem(subItem7).addSubItem(subItem8).addSubItem(subItem9).addSubItem(subItem10);
-
-
session.save(item1);
session.save(item2);
session.save(item3);
diff --git a/src/test/java/jcache/L2C/test/base/QueryCacheTestBase.java b/src/test/java/jcache/L2C/test/base/QueryCacheTestBase.java
index fe4a0d8..42d5456 100644
--- a/src/test/java/jcache/L2C/test/base/QueryCacheTestBase.java
+++ b/src/test/java/jcache/L2C/test/base/QueryCacheTestBase.java
@@ -1,7 +1,7 @@
package jcache.L2C.test.base;
-import jcache.L2C.test.entity.Item;
-import jcache.L2C.test.entity.SubItem;
+import jcache.L2C.entity.Item;
+import jcache.L2C.entity.SubItem;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.stat.CacheRegionStatistics;
@@ -23,24 +23,23 @@ public QueryCacheTestBase(boolean useHazelcastClient) {
}
@Test
- public void queryMissPutAndHitTest(){
+ public void queryCacheBasicMissPutAndHitTest(){
Session session = sfUtil.getSessionFactory().openSession();
+ @SuppressWarnings("unchecked")
List
- itemList = session.createQuery(ITEM_QUERY_STRING)
.setCacheable(true)
.setCacheRegion("Item-Query-Cache").list();
CacheRegionStatistics itemQueryCacheStats = stats.getQueryRegionStatistics("Item-Query-Cache");
-
Assert.assertEquals(2,itemList.size());
Assert.assertEquals(1,itemQueryCacheStats.getMissCount());
Assert.assertEquals(1,itemQueryCacheStats.getPutCount());
Assert.assertEquals(0,itemQueryCacheStats.getHitCount());
-
session.close();
session = sfUtil.getSessionFactory().openSession();
@@ -55,10 +54,11 @@ public void queryMissPutAndHitTest(){
}
@Test
- public void subitemQueryAndUpdateTest(){
+ public void queryCacheUpdateThenPutTest(){
Session session = sfUtil.getSessionFactory().openSession();
+ @SuppressWarnings("unchecked")
List subitemList = session.createQuery(SUBITEM_QUERY_STRING)
.setCacheable(true)
.setCacheRegion("SubItem-Query-Cache").list();
diff --git a/src/test/java/jcache/L2C/test/util/SessionFactoryUtil.java b/src/test/java/jcache/L2C/test/util/SessionFactoryUtil.java
index eb011a0..3b3c29a 100644
--- a/src/test/java/jcache/L2C/test/util/SessionFactoryUtil.java
+++ b/src/test/java/jcache/L2C/test/util/SessionFactoryUtil.java
@@ -1,8 +1,6 @@
package jcache.L2C.test.util;
-
import com.hazelcast.core.Hazelcast;
-
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.stat.Statistics;
@@ -24,6 +22,10 @@ private SessionFactory createSessionFactory() {
// -DtestType=[ jcache | plugin ]
final String testingType = System.getProperty("testType");
+ if(!testingType.equals("jcache") && !testingType.equals("plugin")){
+ throw new IllegalArgumentException("Provide a valid testing method: -DtestType=[ jcache | plugin ]");
+ }
+
Configuration configuration = new Configuration();
String hibernateConfigURL;
@@ -54,37 +56,4 @@ public SessionFactory getSessionFactory() {
return sessionFactory;
}
- /*
-
- private void shutdown() {
- try {
- //transaction.rollback();
- session.close();
- sessionFactory.close();
- Hazelcast.shutdownAll();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public Session getActiveSession(){
- return this.session.isOpen() ? this.session : null;
- }
-
- public Session createNewSession(){
- //if (session != null && session.isOpen()) session.close();
- session = sessionFactory.openSession();
- return session;
- }
-
- public void commit() {
- if(!session.isOpen()) return;
- Transaction tx = session.beginTransaction();
- tx.commit();
- }
-
- public void closeSession(){
- if (!session.isOpen()) session.close();
- }*/
-
-
}
diff --git a/src/test/resources/jcache-client-hibernate.cfg.xml b/src/test/resources/jcache-client-hibernate.cfg.xml
index 634c70b..9781795 100644
--- a/src/test/resources/jcache-client-hibernate.cfg.xml
+++ b/src/test/resources/jcache-client-hibernate.cfg.xml
@@ -52,8 +52,8 @@
create
-
-
+
+
\ No newline at end of file
diff --git a/src/test/resources/jcache-server-hibernate.cfg.xml b/src/test/resources/jcache-server-hibernate.cfg.xml
index 1c4f7e1..5ae8d92 100644
--- a/src/test/resources/jcache-server-hibernate.cfg.xml
+++ b/src/test/resources/jcache-server-hibernate.cfg.xml
@@ -51,8 +51,8 @@
create
-
-
+
+
\ No newline at end of file
diff --git a/src/test/resources/plugin-client-hibernate.cfg.xml b/src/test/resources/plugin-client-hibernate.cfg.xml
index b828b5a..8d43278 100644
--- a/src/test/resources/plugin-client-hibernate.cfg.xml
+++ b/src/test/resources/plugin-client-hibernate.cfg.xml
@@ -40,8 +40,8 @@
create
-
-
+
+
\ No newline at end of file
diff --git a/src/test/resources/plugin-server-hibernate.cfg.xml b/src/test/resources/plugin-server-hibernate.cfg.xml
index 7fc1307..b8de83f 100644
--- a/src/test/resources/plugin-server-hibernate.cfg.xml
+++ b/src/test/resources/plugin-server-hibernate.cfg.xml
@@ -37,8 +37,8 @@
create
-
-
+
+
\ No newline at end of file