Pregunta

ISession de NHibernate expone un método persist () con dos sobrecargas. No puedo encontrar documentación sobre este método en cualquier lugar. Ni siquiera se menciona en el material de referencia en NHibernate http://nhibernate.info/doc/nh /en/index.html .

¿Es este método obsoleto, o va a ser? Cuando se supone que debe ser utilizado? ¿Cómo se compara a saveOrUpdate ()?

Cualquier punteros sería muy apreciada.

¿Fue útil?

Solución

El último comentario en este hilo http://opensource.atlassian.com/ proyectos / hibernación / Navegar / HHH-1273 especifica muy bien:

persistir () está bien definida. Se hace una instancia transitoria persistente. Sin embargo, esto no garantiza que el identificador valor será asignado a la instancia persistente inmediatamente, la asignación podría ocurrir a ras hora. La especificación no dice eso, lo que es el problema que tengo con persistir ().

persist () también garantiza que lo hará No ejecutar una instrucción INSERT si se llama fuera de transacción límites. Esto está en útil conversaciones con una larga duración extendido sesión / persistencia contexto.

se requiere un método como persistir ().

save () no garantiza la misma, se devuelve un identificador, y si una INSERT tiene que ser ejecutada para obtener el identificador (por ejemplo, generador de "identidad", no "secuencia"), este inserto ocurre de inmediato, no importa si usted es dentro o fuera de una transacción. Esto no es bueno en una larga ejecución conversación con un prolongado Sesión / persistencia contexto.

También parece por lo que pude deducir de otras fuentes que tienen una entidad cascada = "persistir" caerá en cascada en el momento de la llamada, no en color. Así podría ocurrir muy útil también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top