java - hibernate的session怎样确保与数据库保持一致?
PHPz
PHPz 2017-04-18 09:48:21
0
3
406

hibernate里的session一级缓存,当一个用户通过get()load()等方法从数据库拿到某条数据,数据被缓存,此时第二个用户修改该条数据,数据库该数据被修改,此时第一个用户再get()该数据,从缓存中拿到数据,拿到的并不是实时的数据而是缓存的数据。这样想对不对?应该怎么解决?

PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
伊谢尔伦

Ça y est, donc la session est généralement très courte, car tous les caches disparaîtront si la session est fermée et rouverte

Vous pouvez utiliser evict() ou clear() pour actualiser le cache au cours de la session

Peter_Zhu

L'interface Session définit une méthode rafraîchir(). Appelez cette méthode avant d'appeler la méthode get() ou load(). Vous pouvez obtenir les dernières données en appelant cette méthode ;

阿神

Comment obtenir les dernières données a été expliqué ci-dessus. Ma suggestion est que la session correspond d'abord à une transaction de base de données et que le temps d'exécution de la transaction soit le plus court possible. Deuxièmement, pour les données qui changent ailleurs au cours de la session, la solution officielle devrait être d'utiliser un mécanisme de verrouillage. Des verrous optimistes peuvent être utilisés lorsqu'un certain nombre d'échecs de transaction et d'annulations peuvent être tolérés. Sinon, des verrous pessimistes peuvent être envisagés. L’affiche fournira la solution réelle. C’est à vous de déterminer quelle méthode utiliser dans votre application.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal