diff --git a/pom.xml b/pom.xml
index 05af1f94..da913958 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,7 @@
false
java:openejb/Resource/My DataSource
org.hibernate.dialect.HSQLDialect
+ false
@@ -108,6 +109,16 @@
org.hsqldb:hsqldb:SNAPSHOT
mysql:mysql-connector-java:5.1.24
postgresql:postgresql:9.1-901.jdbc4
+
+ org.infinispan:infinispan-core:5.1.4.FINAL
+ org.hibernate:hibernate-infinispan:4.1.11.Final
+ org.jgroups:jgroups:3.0.9.Final
+ org.jboss.marshalling:jboss-marshalling-river:1.3.11.GA
+ org.jboss.marshalling:jboss-marshalling:1.3.11.GA
+ org.codehaus.woodstox:woodstox-core-asl:4.1.1
+ org.codehaus.woodstox:stax2-api:3.1.1
+ org.rhq.helpers:rhq-pluginAnnotations:3.0.4
+ org.jboss.logmanager:jboss-logmanager:1.2.2.GA
@@ -409,6 +420,12 @@
+
+ cache
+
+ true
+
+
mysql
diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java
index 16f9dcc3..1393b930 100644
--- a/src/main/java/com/commafeed/backend/model/Feed.java
+++ b/src/main/java/com/commafeed/backend/model/Feed.java
@@ -3,6 +3,7 @@ package com.commafeed.backend.model;
import java.util.Date;
import java.util.Set;
+import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -12,11 +13,16 @@ import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
import com.google.common.collect.Sets;
@Entity
@Table(name = "FEEDS")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class Feed extends AbstractModel {
/**
diff --git a/src/main/java/com/commafeed/backend/model/FeedCategory.java b/src/main/java/com/commafeed/backend/model/FeedCategory.java
index 8474c998..44811a94 100644
--- a/src/main/java/com/commafeed/backend/model/FeedCategory.java
+++ b/src/main/java/com/commafeed/backend/model/FeedCategory.java
@@ -2,6 +2,7 @@ package com.commafeed.backend.model;
import java.util.Set;
+import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
@@ -10,11 +11,16 @@ import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
import com.google.common.collect.Sets;
@Entity
@Table(name = "FEEDCATEGORIES")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FeedCategory extends AbstractModel {
@Column(length = 128, nullable = false)
diff --git a/src/main/java/com/commafeed/backend/model/FeedEntry.java b/src/main/java/com/commafeed/backend/model/FeedEntry.java
index a769f511..8dbe11fa 100644
--- a/src/main/java/com/commafeed/backend/model/FeedEntry.java
+++ b/src/main/java/com/commafeed/backend/model/FeedEntry.java
@@ -3,6 +3,7 @@ package com.commafeed.backend.model;
import java.util.Date;
import java.util.Set;
+import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -16,11 +17,16 @@ import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
import com.google.api.client.util.Sets;
@Entity
@Table(name = "FEEDENTRIES")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FeedEntry extends AbstractModel {
@Column(length = 2048, nullable = false)
diff --git a/src/main/java/com/commafeed/backend/model/FeedEntryContent.java b/src/main/java/com/commafeed/backend/model/FeedEntryContent.java
index 119b7204..7b4ccde8 100644
--- a/src/main/java/com/commafeed/backend/model/FeedEntryContent.java
+++ b/src/main/java/com/commafeed/backend/model/FeedEntryContent.java
@@ -1,13 +1,19 @@
package com.commafeed.backend.model;
+import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.Table;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
@Entity
@Table(name = "FEEDENTRYCONTENTS")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FeedEntryContent extends AbstractModel {
@Column(length = 2048)
diff --git a/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java b/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java
index 5cd543fc..39d83749 100644
--- a/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java
+++ b/src/main/java/com/commafeed/backend/model/FeedEntryStatus.java
@@ -1,5 +1,6 @@
package com.commafeed.backend.model;
+import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
@@ -7,9 +8,14 @@ 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 = "FEEDENTRYSTATUSES")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FeedEntryStatus extends AbstractModel {
@ManyToOne(fetch = FetchType.LAZY)
diff --git a/src/main/java/com/commafeed/backend/model/FeedSubscription.java b/src/main/java/com/commafeed/backend/model/FeedSubscription.java
index 96be770e..957d7b97 100644
--- a/src/main/java/com/commafeed/backend/model/FeedSubscription.java
+++ b/src/main/java/com/commafeed/backend/model/FeedSubscription.java
@@ -2,6 +2,7 @@ package com.commafeed.backend.model;
import java.util.Set;
+import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -11,9 +12,14 @@ import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
@Entity
@Table(name = "FEEDSUBSCRIPTIONS")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FeedSubscription extends AbstractModel {
@ManyToOne(fetch = FetchType.LAZY)
diff --git a/src/main/java/com/commafeed/backend/model/User.java b/src/main/java/com/commafeed/backend/model/User.java
index 28d38e31..7a57cb1f 100644
--- a/src/main/java/com/commafeed/backend/model/User.java
+++ b/src/main/java/com/commafeed/backend/model/User.java
@@ -3,6 +3,7 @@ package com.commafeed.backend.model;
import java.util.Date;
import java.util.Set;
+import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -12,11 +13,16 @@ import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
import com.google.common.collect.Sets;
@Entity
@Table(name = "USERS")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class User extends AbstractModel {
@Column(length = 32, nullable = false, unique = true)
diff --git a/src/main/java/com/commafeed/backend/model/UserRole.java b/src/main/java/com/commafeed/backend/model/UserRole.java
index fb9537d2..eefa13ed 100644
--- a/src/main/java/com/commafeed/backend/model/UserRole.java
+++ b/src/main/java/com/commafeed/backend/model/UserRole.java
@@ -1,5 +1,6 @@
package com.commafeed.backend.model;
+import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
@@ -9,9 +10,14 @@ import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
@Entity
@Table(name = "USERROLES")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class UserRole extends AbstractModel {
public static enum Role {
diff --git a/src/main/java/com/commafeed/backend/model/UserSettings.java b/src/main/java/com/commafeed/backend/model/UserSettings.java
index d5b3657e..f68c9664 100644
--- a/src/main/java/com/commafeed/backend/model/UserSettings.java
+++ b/src/main/java/com/commafeed/backend/model/UserSettings.java
@@ -1,5 +1,6 @@
package com.commafeed.backend.model;
+import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
@@ -10,9 +11,14 @@ import javax.persistence.Lob;
import javax.persistence.OneToOne;
import javax.persistence.Table;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
@Entity
@Table(name = "USERSETTINGS")
@SuppressWarnings("serial")
+@Cacheable
+@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class UserSettings extends AbstractModel {
public enum ReadingMode {
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
index 621ad5d7..7759f245 100644
--- a/src/main/resources/META-INF/persistence.xml
+++ b/src/main/resources/META-INF/persistence.xml
@@ -7,6 +7,7 @@
org.hibernate.ejb.HibernatePersistence
${jpa.datasource.name}
+ ENABLE_SELECTIVE
@@ -21,6 +22,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file