Ho letto che utilizzando la cache di secondo livello di Hibernate, può migliorare le prestazioni delle applicazioni avendo meno hit di database per il recupero di dati/oggetti.Come ibernazione garantisce che la cache di secondo livello sia aggiornata con i dati più recenti nel database
Tuttavia, la modalità di sospensione assicura che la cache di secondo livello sia aggiornata con i dati nel database.
Ad, esempio:
Supponiamo classe inferiore è un'entità e persisteva nel DB.
@Entity
class User {
Id
private int id;
private String str;
}
Ora, se abbiamo abilitato cache di secondo livello, capisco che se apriamo diverse sessioni poi ogni sessione sarà colpito il secondo cache di livello per il recupero di valore dell'oggetto.
Ora, se i dati nel database vengono modificati (ad esempio per riga con id = 1), dicono da un processo indipendente/cambiando manualmente i valori, e proviamo ad accedere al valore, in che modo hibernate rileva che la cache sta avendo ultimo valore (per id = 1).
In generale, in che modo l'ibernazione garantisce che i dati nella cache di secondo livello siano coerenti con i valori di db.
Grazie per il vostro aiuto.
Grazie mille per le informazioni dettagliate. Quindi, possiamo considerarlo uno degli svantaggi dell'utilizzo dell'ibernazione? Ci sono rimedi per questo? – CuriousMind
Non si tratta tanto di ibernazione, ma è un problema di principio con le cache.Come tutti sappiamo, ci sono 10 problemi nell'IT: nominare le cose e invalidare la cache e con uno degli errori –
@Jens Sì, nominare le cose è probabilmente il peggiore :) –