Skip to content

Commit

Permalink
Merge pull request #940 from terrestris/fix-cache
Browse files Browse the repository at this point in the history
Fixes for hibernate/ehcache
  • Loading branch information
dnlkoch authored Oct 25, 2024
2 parents 40bfa47 + e499a55 commit d24d9e3
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 9 deletions.
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,7 @@
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache3.version}</version>
<classifier>jakarta</classifier>
</dependency>

<dependency>
Expand Down
11 changes: 6 additions & 5 deletions shogun-config/src/main/resources/application-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,6 @@ spring:
hibernate:
id:
db_structure_naming_strategy: single
jakarta:
cache:
provider: org.ehcache.jsr107.EhcacheCachingProvider
uri: ehcache.xml
format_sql: true
# Generate statistics to check if L2/query cache is actually being used
generate_statistics: true
Expand All @@ -66,11 +62,16 @@ spring:
# Enable query cache
use_query_cache: true
region:
factory_class: org.hibernate.cache.jcache.JCacheRegionFactory
factory_class: jcache
integration:
envers:
# Set this to false to disable auditing entity changes
enabled: true
javax:
cache:
uri: ehcache.xml
provider: org.ehcache.jsr107.EhcacheCachingProvider

jackson:
serialization:
fail-on-empty-beans: false
Expand Down
4 changes: 4 additions & 0 deletions shogun-config/src/main/resources/ehcache.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,14 @@
<cache alias="permission" uses-template="default" />
<cache alias="userclasspermissions" uses-template="default" />
<cache alias="userinstancepermissions" uses-template="default" />
<cache alias="roleinstancepermissions" uses-template="default" />
<cache alias="roleclasspermissions" uses-template="default" />
<cache alias="publicinstancepermissions" uses-template="default" />
<cache alias="applications" uses-template="default" />
<cache alias="files" uses-template="default" />
<cache alias="groups" uses-template="default" />
<cache alias="layers" uses-template="default" />
<cache alias="roles" uses-template="default" />
<cache alias="users" uses-template="default" />

</config>
2 changes: 2 additions & 0 deletions shogun-config/src/main/resources/log4j2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ Configuration:
level: info
- name: org.hibernate.type.descriptor.sql
level: info
- name: org.ehcache
level: info
- name: org.springframework.boot
level: info
- name: org.springframework
Expand Down
1 change: 1 addition & 0 deletions shogun-lib/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import org.hibernate.envers.AuditTable;
Expand All @@ -31,6 +33,8 @@
@Table(schema = "shogun")
@Audited
@AuditTable(value = "publicinstancepermissions_rev", schema = "shogun_rev")
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="publicinstancepermissions")
@Getter
@Setter
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.history.RevisionRepository;
import org.springframework.lang.NonNull;

import java.util.List;

Expand All @@ -36,6 +37,8 @@ public interface BaseCrudRepository<T, ID> extends
PagingAndSortingRepository<T, ID> {

@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
@Override
@NonNull
List<T> findAll();

/**
Expand Down Expand Up @@ -63,7 +66,7 @@ AND uip.permission.name IN ('ADMIN', 'READ', 'CREATE_READ', 'CREATE_READ_UPDATE'
AND rip.permission.name IN ('ADMIN', 'READ', 'CREATE_READ', 'CREATE_READ_UPDATE', 'CREATE_READ_DELETE', 'READ_UPDATE', 'READ_DELETE', 'READ_UPDATE_DELETE')
)
""")
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
Page<T> findAll(Pageable pageable, Long userId, List<Long> roleIds);

/**
Expand Down Expand Up @@ -97,7 +100,7 @@ AND gip.permission.name IN ('ADMIN', 'READ', 'CREATE_READ', 'CREATE_READ_UPDATE'
AND rip.permission.name IN ('ADMIN', 'READ', 'CREATE_READ', 'CREATE_READ_UPDATE', 'CREATE_READ_DELETE', 'READ_UPDATE', 'READ_DELETE', 'READ_UPDATE_DELETE')
)
""")
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
Page<T> findAll(Pageable pageable, Long userId, List<Long> groupIds, List<Long> roleIds);

/**
Expand All @@ -107,7 +110,14 @@ AND rip.permission.name IN ('ADMIN', 'READ', 'CREATE_READ', 'CREATE_READ_UPDATE'
* {@literal null}.
* @return A page of entities.
*/
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
Page<T> findAll(Pageable pageable);
@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
@Override
@NonNull
Page<T> findAll(@NonNull Pageable pageable);

@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
@Override
@NonNull
Iterable<T> findAllById(@NonNull Iterable<ID> ids);

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
package de.terrestris.shogun.lib.repository.security.permission;

import de.terrestris.shogun.lib.model.security.permission.PublicInstancePermission;
import jakarta.persistence.QueryHint;
import org.hibernate.jpa.AvailableHints;
import org.springframework.data.jpa.repository.QueryHints;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

Expand All @@ -26,6 +29,7 @@
public interface PublicInstancePermissionRepository extends CrudRepository<PublicInstancePermission, Long> {
void deleteByEntityId(Long entityId);

@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
Optional<PublicInstancePermission> findByEntityId(Long entityId);

}

0 comments on commit d24d9e3

Please sign in to comment.