Bagaimana cara agar entitas JPA tetap ada/dihapus tetapi tidak dikomit?

Saya memiliki tabel anak master. Pengguna dapat menambah/menghapus anak setelah memilih item/entitas utama. Ketika indeks pemilihan daftar item master berubah, saya mengisi tabel anak/daftar array dengan item anak dari item master yang dipilih ini dari DB. Saya membuka manajer entitas, memulai transaksi, mempertahankan atau menghapus entitas/item anak ketika pengguna mengklik tombol tambah/hapus anak yang sesuai. Masalah saya adalah melacak entitas anak baru dan yang dihapus, sementara pengguna memilih item master lainnya. Karena saya menghapus tabel anak/Daftar Array (tetapi tidak menghapus konteks persistensi) sebelum mengisinya dengan entitas anak item master yang baru dipilih. Saya ingin mencerminkan item anak yang baru/dihapus, belum dikomit ketika pengguna memilih item master sebelumnya lagi. Harapan menjelaskan masalah saya dengan benar. Menggunakan hibernasi melalui JPA. Terima kasih.


person Uluk Biy    schedule 13.01.2012    source sumber


Jawaban (2)


Baiklah, jalankan saja query untuk mendapatkan semua anak dari master yang dipilih. Sekalipun transaksi tersebut belum dilakukan, transaksi tersebut akan melihatnya di database, karena transaksi tersebut telah menyimpannya.

Namun perlu diingat bahwa menggunakan transaksi yang panjang tidak dapat diskalakan, dan akan menyebabkan berbagai macam masalah penguncian dan staleness. Mengapa Anda tidak menyimpan anak-anak dan melakukan komitmen setiap kali pengguna menambah atau menghapus anak?

person JB Nizet    schedule 13.01.2012
comment
Saya juga diharapkan seperti itu. Aneh. Kemarin tidak berjalan sesuai harapan, hari ini berjalan sesuai harapan. Terima kasih. Proyek yang saya kerjakan adalah program javaFX dan hanya akan berjalan di desktop dengan sedikit pengguna. Itu sebabnya transaksinya tetap lama. - person Uluk Biy; 13.01.2012

Saya lebih suka tidak membiarkan transaksi dibuka di antara klik pengguna. Dia bisa pergi rehat minum kopi dan meninggalkannya. Saya lebih suka menggunakan tabel temporarty, sesi, cache, input tersembunyi (jika itu web front-end) dll.

person Piotr Gwiazda    schedule 13.01.2012
comment
Bisakah Anda menjelaskan dan memberikan beberapa tautan tentang sesi dan cache. Apakah Anda menyebutkan ini dalam konteks jpa? Tidak ada server web atau aplikasi web, kumpulan koneksi, dan front-end web di proyek saya. - person Uluk Biy; 13.01.2012