Skip to content

Commit d24d9e3

Browse files
authored
Merge pull request #940 from terrestris/fix-cache
Fixes for hibernate/ehcache
2 parents 40bfa47 + e499a55 commit d24d9e3

File tree

8 files changed

+36
-9
lines changed

8 files changed

+36
-9
lines changed

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@
442442
<groupId>org.ehcache</groupId>
443443
<artifactId>ehcache</artifactId>
444444
<version>${ehcache3.version}</version>
445+
<classifier>jakarta</classifier>
445446
</dependency>
446447

447448
<dependency>

shogun-config/src/main/resources/application-base.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ spring:
5353
hibernate:
5454
id:
5555
db_structure_naming_strategy: single
56-
jakarta:
57-
cache:
58-
provider: org.ehcache.jsr107.EhcacheCachingProvider
59-
uri: ehcache.xml
6056
format_sql: true
6157
# Generate statistics to check if L2/query cache is actually being used
6258
generate_statistics: true
@@ -66,11 +62,16 @@ spring:
6662
# Enable query cache
6763
use_query_cache: true
6864
region:
69-
factory_class: org.hibernate.cache.jcache.JCacheRegionFactory
65+
factory_class: jcache
7066
integration:
7167
envers:
7268
# Set this to false to disable auditing entity changes
7369
enabled: true
70+
javax:
71+
cache:
72+
uri: ehcache.xml
73+
provider: org.ehcache.jsr107.EhcacheCachingProvider
74+
7475
jackson:
7576
serialization:
7677
fail-on-empty-beans: false

shogun-config/src/main/resources/ehcache.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,14 @@
8282
<cache alias="permission" uses-template="default" />
8383
<cache alias="userclasspermissions" uses-template="default" />
8484
<cache alias="userinstancepermissions" uses-template="default" />
85+
<cache alias="roleinstancepermissions" uses-template="default" />
86+
<cache alias="roleclasspermissions" uses-template="default" />
87+
<cache alias="publicinstancepermissions" uses-template="default" />
8588
<cache alias="applications" uses-template="default" />
8689
<cache alias="files" uses-template="default" />
8790
<cache alias="groups" uses-template="default" />
8891
<cache alias="layers" uses-template="default" />
92+
<cache alias="roles" uses-template="default" />
8993
<cache alias="users" uses-template="default" />
9094

9195
</config>

shogun-config/src/main/resources/log4j2.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ Configuration:
4444
level: info
4545
- name: org.hibernate.type.descriptor.sql
4646
level: info
47+
- name: org.ehcache
48+
level: info
4749
- name: org.springframework.boot
4850
level: info
4951
- name: org.springframework

shogun-lib/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@
161161
<dependency>
162162
<groupId>org.ehcache</groupId>
163163
<artifactId>ehcache</artifactId>
164+
<classifier>jakarta</classifier>
164165
</dependency>
165166
<dependency>
166167
<groupId>com.sun.xml.bind</groupId>

shogun-lib/src/main/java/de/terrestris/shogun/lib/model/security/permission/PublicInstancePermission.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import io.swagger.v3.oas.annotations.media.Schema;
2020
import jakarta.persistence.*;
2121
import lombok.*;
22+
import org.hibernate.annotations.Cache;
23+
import org.hibernate.annotations.CacheConcurrencyStrategy;
2224
import org.hibernate.annotations.CreationTimestamp;
2325
import org.hibernate.annotations.UpdateTimestamp;
2426
import org.hibernate.envers.AuditTable;
@@ -31,6 +33,8 @@
3133
@Table(schema = "shogun")
3234
@Audited
3335
@AuditTable(value = "publicinstancepermissions_rev", schema = "shogun_rev")
36+
@Cacheable
37+
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="publicinstancepermissions")
3438
@Getter
3539
@Setter
3640
@AllArgsConstructor

shogun-lib/src/main/java/de/terrestris/shogun/lib/repository/BaseCrudRepository.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.data.repository.NoRepositoryBean;
2727
import org.springframework.data.repository.PagingAndSortingRepository;
2828
import org.springframework.data.repository.history.RevisionRepository;
29+
import org.springframework.lang.NonNull;
2930

3031
import java.util.List;
3132

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

3839
@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
40+
@Override
41+
@NonNull
3942
List<T> findAll();
4043

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

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

103106
/**
@@ -107,7 +110,14 @@ AND rip.permission.name IN ('ADMIN', 'READ', 'CREATE_READ', 'CREATE_READ_UPDATE'
107110
* {@literal null}.
108111
* @return A page of entities.
109112
*/
110-
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
111-
Page<T> findAll(Pageable pageable);
113+
@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
114+
@Override
115+
@NonNull
116+
Page<T> findAll(@NonNull Pageable pageable);
117+
118+
@QueryHints(@QueryHint(name = AvailableHints.HINT_CACHEABLE, value = "true"))
119+
@Override
120+
@NonNull
121+
Iterable<T> findAllById(@NonNull Iterable<ID> ids);
112122

113123
}

shogun-lib/src/main/java/de/terrestris/shogun/lib/repository/security/permission/PublicInstancePermissionRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
package de.terrestris.shogun.lib.repository.security.permission;
1818

1919
import de.terrestris.shogun.lib.model.security.permission.PublicInstancePermission;
20+
import jakarta.persistence.QueryHint;
21+
import org.hibernate.jpa.AvailableHints;
22+
import org.springframework.data.jpa.repository.QueryHints;
2023
import org.springframework.data.repository.CrudRepository;
2124
import org.springframework.stereotype.Repository;
2225

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

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

3135
}

0 commit comments

Comments
 (0)