From 3ba593a15c0d2c94281523a051cf4c92cbdf9dad Mon Sep 17 00:00:00 2001 From: jomu Date: Fri, 18 Jan 2019 16:23:45 +0100 Subject: [PATCH] enabled caching --- .../account/control/AccountControl.java | 2 +- .../account/entity/AccountEntity.java | 33 +++++++++++++++---- .../account/entity/AccountHistoryEntity.java | 2 ++ .../account/entity/AccountLoginEntity.java | 2 ++ .../application/entity/ApplicationEntity.java | 17 ++++++++-- .../main/resources/META-INF/persistence.xml | 1 - 6 files changed, 46 insertions(+), 11 deletions(-) diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/control/AccountControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/control/AccountControl.java index b4fc968..6986804 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/control/AccountControl.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/control/AccountControl.java @@ -90,7 +90,7 @@ public class AccountControl implements Serializable { * @return a list of active accounts */ private List getActiveAccounts() { - Query query = em.createQuery("SELECT a FROM AccountEntity a WHERE a.status <> :status", AccountEntity.class); + Query query = em.createNamedQuery ("AccountEntity.findActiveAccounts"); query.setParameter("status", AccountStatus.DISABLED.name()); return query.getResultList(); } diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java index 78d55e3..b1ed374 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java @@ -23,6 +23,7 @@ import java.util.Date; import java.util.List; import java.util.UUID; import javax.persistence.Basic; +import javax.persistence.Cacheable; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -36,6 +37,7 @@ import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.OneToOne; +import javax.persistence.QueryHint; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -50,19 +52,35 @@ import org.hibernate.annotations.Type; * @author joern.muehlencord */ @Entity +@Cacheable @Table(name = "account") @XmlRootElement @NamedQueries({ - @NamedQuery(name = "AccountEntity.findAll", query = "SELECT a FROM AccountEntity a ORDER by a.lastname, a.firstname"), - @NamedQuery(name = "AccountEntity.findByUsername", query = "SELECT a FROM AccountEntity a WHERE a.username = :username"), - @NamedQuery(name = "AccountEntity.findByStatus", query = "SELECT a FROM AccountEntity a WHERE a.status = :status"), + @NamedQuery(name = "AccountEntity.findAll", query = "SELECT a FROM AccountEntity a ORDER by a.lastname, a.firstname", + hints = { + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), + @NamedQuery(name = "AccountEntity.findByUsername", query = "SELECT a FROM AccountEntity a WHERE a.username = :username", + hints = { + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), + @NamedQuery(name = "AccountEntity.findByStatus", query = "SELECT a FROM AccountEntity a WHERE a.status = :status", + hints = { + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), + @NamedQuery(name = "AccountEntity.findActiveAccounts", query = "SELECT a FROM AccountEntity a WHERE a.status <> :status", + hints = { + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), @NamedQuery(name = "AccountEntity.findByCreatedOn", query = "SELECT a FROM AccountEntity a WHERE a.createdOn = :createdOn"), @NamedQuery(name = "AccountEntity.findByCreatedBy", query = "SELECT a FROM AccountEntity a WHERE a.createdBy = :createdBy"), @NamedQuery(name = "AccountEntity.findByLastUpdatedOn", query = "SELECT a FROM AccountEntity a WHERE a.lastUpdatedOn = :lastUpdatedOn"), - @NamedQuery(name = "AccountEntity.findByLastUpdatedBy", query = "SELECT a FROM AccountEntity a WHERE a.lastUpdatedBy = :lastUpdatedBy")}) + @NamedQuery(name = "AccountEntity.findByLastUpdatedBy", query = "SELECT a FROM AccountEntity a WHERE a.lastUpdatedBy = :lastUpdatedBy") + +}) public class AccountEntity implements Serializable, Account { - private static final long serialVersionUID = 6216991757526150935L; + private static final long serialVersionUID = 2174163529615355336L; @Id @Basic(optional = false) @@ -139,7 +157,7 @@ public class AccountEntity implements Serializable, Account { } applicationRoleList.add(applicationRole); } - + /* **** getter / setter **** */ public UUID getId() { return id; @@ -149,6 +167,7 @@ public class AccountEntity implements Serializable, Account { this.id = id; } + @Override public String getUsername() { return username; } @@ -165,6 +184,7 @@ public class AccountEntity implements Serializable, Account { this.emailaddress = emailaddress; } + @Override public String getFirstname() { return firstname; } @@ -173,6 +193,7 @@ public class AccountEntity implements Serializable, Account { this.firstname = firstname; } + @Override public String getLastname() { return lastname; } diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java index b7ef0a6..1599dd1 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java @@ -19,6 +19,7 @@ import java.io.Serializable; import java.util.Date; import java.util.UUID; import javax.persistence.Basic; +import javax.persistence.Cacheable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -42,6 +43,7 @@ import org.hibernate.annotations.Type; */ @Entity @Table(name = "account_history") +@Cacheable @XmlRootElement @NamedQueries({ @NamedQuery(name = "AccountHistoryEntity.findAll", query = "SELECT a FROM AccountHistoryEntity a"), diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountLoginEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountLoginEntity.java index 1b471b5..ad3b084 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountLoginEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountLoginEntity.java @@ -19,6 +19,7 @@ import java.io.Serializable; import java.util.Date; import java.util.UUID; import javax.persistence.Basic; +import javax.persistence.Cacheable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -42,6 +43,7 @@ import org.hibernate.annotations.Type; */ @Entity @Table(name = "account_login") +@Cacheable @XmlRootElement @NamedQueries({ @NamedQuery(name = "AccountLoginEntity.findAll", query = "SELECT a FROM AccountLoginEntity a"), diff --git a/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java index 2681a94..c647910 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java @@ -20,6 +20,7 @@ import java.io.Serializable; import java.util.List; import java.util.UUID; import javax.persistence.Basic; +import javax.persistence.Cacheable; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -28,6 +29,7 @@ import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; +import javax.persistence.QueryHint; import javax.persistence.Table; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @@ -43,9 +45,18 @@ import org.hibernate.annotations.Type; @Entity @Table(name = "application") @XmlRootElement +@Cacheable @NamedQueries({ - @NamedQuery(name = "ApplicationEntity.findAll", query = "SELECT a FROM ApplicationEntity a"), - @NamedQuery(name = "ApplicationEntity.findByApplicationName", query = "SELECT a FROM ApplicationEntity a WHERE a.applicationName = :applicationName")}) + @NamedQuery(name = "ApplicationEntity.findAll", query = "SELECT a FROM ApplicationEntity a", + hints = { + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), + @NamedQuery(name = "ApplicationEntity.findByApplicationName", query = "SELECT a FROM ApplicationEntity a WHERE a.applicationName = :applicationName", + hints = { + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}) +}) + public class ApplicationEntity implements Serializable { private static final long serialVersionUID = -6407525020014743727L; @@ -69,7 +80,7 @@ public class ApplicationEntity implements Serializable { private List applicationPermissions; @OneToMany(cascade = CascadeType.ALL, mappedBy = "application") private List configEntityList; - + public ApplicationEntity() { } diff --git a/account/src/main/resources/META-INF/persistence.xml b/account/src/main/resources/META-INF/persistence.xml index bb4c0e6..10a60eb 100644 --- a/account/src/main/resources/META-INF/persistence.xml +++ b/account/src/main/resources/META-INF/persistence.xml @@ -1,7 +1,6 @@ - org.eclipse.persistence.jpa.PersistenceProvider false ENABLE_SELECTIVE