如何对JPA嵌套对象进行Spring缓存?

如何对JPA嵌套对象进行Spring缓存?,spring,spring-data-jpa,Spring,Spring Data Jpa,具有具有一系列嵌套对象的域对象B和C是参考数据对象。这些值是静态数据,我们永远不会在表中更新 Class A { B b; C c; } class B { } class C { } B、 C etc相当“沉重”,从DB返回需要一些时间 我有一个这样写的存储库: class MyRepository extends CrudRepository<A, Long> { } 我知道我可以在服务级别使用Spring缓存。但我感兴趣的是数据库级缓存B、C等在许多不同的

具有具有一系列嵌套对象的域对象
B
C
是参考数据对象。这些值是静态数据,我们永远不会在表中更新

Class A {
   B b;
   C c;
}
 
class B {
}

class C {
}
B、 C etc相当“沉重”,从DB返回需要一些时间

我有一个这样写的存储库:

class MyRepository extends CrudRepository<A, Long> {
}

我知道我可以在服务级别使用Spring缓存。但我感兴趣的是数据库级缓存
B
C
等在许多不同的地方以及更多的地方使用(包括PUT/POST),因此它们都可以充分利用这些参考数据的数据库级缓存,因为使用Spring Cache:Save操作没有太多好处。

请检查这是否是您想要的

  • 马文加
  • 实体修改
  • MyRepository.findById(1L)
    
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>5.2.2.Final</version> 
    </dependency>
    
    hibernate.cache.use_second_level_cache=true
    hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
    
    @Entity
    @Cacheable
    @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    public class Foo {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID")
        private long id;
    
        @Column(name = "NAME")
        private String name;
        
        // getters and setters
    }