Hibernate-reactive: session.remove && session.getReference

Dibuat pada 7 Sep 2020  ·  3Komentar  ·  Sumber: hibernate/hibernate-reactive

Halo, seperti yang saya mengerti, mengikuti jpa, hanya ada satu cara untuk menghapus entitas yang terlepas:

factory.withTransaction((session, transaction) -> 
    session.merge(sampleEntity).invokeUni(session::remove)
).await().indefinitely();

Semuanya baik-baik saja, tetapi jika ini tentang kinerja, operasi penggabungan membutuhkan banyak waktu dan dapat menyebabkan masalah kinerja yang nyata. Misalnya, menurut pengukuran waktu saya yang tidak akurat, menghapus 5000 entitas membutuhkan waktu ~4 detik, dalam hibernate-orm dibutuhkan 50ms.

Saya baru saja membaca tentang metode baru yang disebut session.getReference yang mengembalikan instance persisten dari entitas yang diberikan. Apakah mungkin mengizinkan penggunaannya untuk session.remove ?

bug

Semua 3 komentar

Saya baru saja membaca tentang metode baru yang disebut session.getReference yang mengembalikan instance persisten dari entitas yang diberikan. Apakah mungkin mengizinkan penggunaannya untuk session.remove ?

Ah, poin bagus, tentu saja Anda harus bisa melakukan itu. Saya telah membuatnya bekerja di #360.

Namun, saya ingin Anda memahami bahwa tidak ada cara untuk remove() suatu objek tanpa mengambilnya terlebih dahulu. Itu karena remove() memiliki semantik seperti penghapusan kaskade, dan penghapusan koleksi yang bergantung pada status entitas dalam sesi.

Jika Anda benar-benar harus dapat menghapus entitas tanpa mengambilnya, Anda harus menggunakan kueri StatelessSession.delete() atau HQL delete .

@Xset-s PS terima kasih telah melaporkan ini, ini adalah kesalahan besar saya

Tidak masalah, terima kasih atas tanggapan terperinci Anda tentang penghapusan operasi dan untuk perbaikan yang sangat cepat. Saya sedang melakukan eksperimen sekarang dan menulis ulang aplikasi sisi server saya menggunakan perpustakaan baru Anda yang luar biasa, jadi mudah bagi saya untuk menangkap beberapa masalah rumit, yang hanya bisa ditangkap begitu (atau menggunakan sejumlah besar tes )

Apakah halaman ini membantu?
0 / 5 - 0 peringkat