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

Creado en 7 sept. 2020  ·  3Comentarios  ·  Fuente: hibernate/hibernate-reactive

Hola, según tengo entendido, después de jpa, solo hay una forma de eliminar la entidad separada:

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

Todo está bien, pero si se trata de rendimiento, la operación de combinación lleva mucho tiempo y puede causar problemas reales de rendimiento. Por ejemplo, de acuerdo con mis mediciones de tiempo inexactas, eliminar 5000 entidades toma ~ 4s, en modo de hibernación toma 50ms.

Acabo de leer sobre un nuevo método llamado session.getReference que devuelve la instancia persistente de la entidad dada. ¿Es posible permitir su uso por session.remove ?

bug

Todos 3 comentarios

Acabo de leer sobre un nuevo método llamado session.getReference que devuelve la instancia persistente de la entidad dada. ¿Es posible permitir su uso por session.remove ?

Ah, buen punto, absolutamente deberías poder hacer eso. Lo hice funcionar en el # 360.

Sin embargo, quiero que comprenda que no hay forma de remove() un objeto sin buscarlo primero. Eso es porque remove() tiene semánticas como eliminación en cascada y eliminación de colecciones que dependen de tener el estado de la entidad en la sesión.

Si es absolutamente necesario poder eliminar una entidad sin buscarla, debe usar StatelessSession.delete() o una consulta HQL delete .

@ Xset-s PD gracias por informar de esto, fue un gran descuido de mi parte

No hay problema, gracias por su respuesta detallada sobre la operación de eliminación y por una solución muy rápida. Estoy realizando experimentos en este momento y reescribiendo mi aplicación del lado del servidor usando su nueva biblioteca asombrosa, por lo que es fácil para mí detectar algunos problemas difíciles, que solo podrían capturarse solo de manera (o usando una gran cantidad de pruebas 😄)

¿Fue útil esta página
0 / 5 - 0 calificaciones