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

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

PHPz
PHPz

学习是最好的投资!

membalas semua(3)
伊谢尔伦

Betul, jadi sesi biasanya sangat singkat, kerana semua cache akan hilang jika sesi ditutup dan dibuka semula

Anda boleh menggunakan evict() atau clear() untuk memuat semula cache dalam sesi

Peter_Zhu

Antara muka Sesi mentakrifkan kaedah refresh() Panggil kaedah ini sebelum memanggil kaedah get() atau load() Anda boleh mendapatkan data terkini dengan memanggil kaedah ini

阿神

Cara mendapatkan data terkini telah dijelaskan di atas. Cadangan saya ialah sesi pertama sepadan dengan transaksi pangkalan data, dan masa pelaksanaan transaksi harus sesingkat mungkin. Kedua, untuk data yang berubah di tempat lain semasa sesi, penyelesaian rasmi harus menggunakan mekanisme kunci yang optimistik boleh digunakan apabila jumlah kegagalan transaksi dan pemulangan semula boleh diterima poster akan memberikan penyelesaian sebenar Terpulang kepada anda untuk menimbang kaedah yang hendak digunakan dalam aplikasi anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan