Hibernate 2 cache level echache doesn't work

33 Views Asked by At

I faced with issue on Hibernate 2 level chache

Dependencies:

 <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
 </dependency>
    <dependency>
        <groupId>org.ehcache</groupId>
        <artifactId>ehcache</artifactId>
    </dependency>

ehcache.xml:

<ehcache>

<diskStore path="java.io.tmpdir/ehcache"/>

<!-- Default cache settings -->
<defaultCache
        maxElementsInMemory="100"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU"/>

<cache name="com.agps.model.jpa.UserAccount"
       maxElementsInMemory="100"
       eternal="false"
       timeToLiveSeconds="600"
       overflowToDisk="true"/>

Cache entity:

@Data
@Entity
@Table(name = "user_account")
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY, 
 region="com.agps.model.jpa.UserAccount")
 public class UserAccount extends AbstractEntity {
 @Id
 @Column(name = "id", nullable = false)
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private int id;
 @Basic
 @Column(name = "first_name", nullable = true, length = 32)
 private String firstName;
 @Basic
 @Column(name = "last_name", nullable = true, length = 32)
 private String lastName;

Service:

    @RequiredArgsConstructor
@Component(value = "userAccountDtoAssembler")
public class UserAccountDtoAssemblerImpl implements UserAccountDtoAssembler {

  private final UserAccountRepository userAccountRepository;

  @Override
  public UserAccountDto readDtoByUsername(String username) {
    UserAccount userAccount = userAccountRepository.findByEmail(username);
    return assembleDto(userAccount);
  }

When I call method findByEmail with the same username, hibernate always makes call to DB (select ) I use Hibernate 5, ehcache 2.10.9.2

What's happen? Thanks

0

There are 0 best solutions below