Training, Workshops, Softwareentwicklung

Hibernate Tutorial

Read-Write Cache

Wir können nun auf Entity-Ebene verschiedene Cache-Modi einstellen. Einer davon ist:

Read-Write
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Customer {
    @Id
    private Long id;
    private String firstname;
    private String lastname;

In diesem Modus wird jede Schreiboperation den Cache automatisch aktualisieren.

Read-Write-Test
Customer c = new Customer();
c.setId(2L);
c.setFirstname("Alice");
c.setLastname("Rogers");

doInHibernate(em -> withTransaction(em, () -> em.persist(c))); (1)
Customer customerOutside = getCustomerAlice(); (2)
customerOutside.setFirstname("Buck");
saveCustomer(customerOutside); (3)

doInHibernate(em -> {

    Customer customer = em.find(Customer.class, 2L); (4)
    assertNotNull(customer);
    assertEquals("Buck", customer.getFirstname());
    withTransaction(em, () -> em.remove(customer));
});
assertSelectCount(0); (5)
1 Ein neuer Customer wird gespeichert,
2 erneut geladen,
3 und mit geändertem firstname gespeichert.
4 Auch dieser Zugriff mit find findet den geänderten Wert im Cache
5 Insgesamt wurden 0 Selects ausgeführt.