Primavera @ Propagación transaccional de solo lectura.

Estoy experimentando con el uso del patrón de comando para permitir que mi capa web funcione con entidades de Hibernación en el contexto de una sola transacción (evitando así las excepciones de carga lenta). Sin embargo, ahora estoy confundido con cómo debo lidiar con las transacciones.

Mis comandos llaman a los métodos de la capa de servicio que están anotados con@Transactional anotaciones Algunos de estos métodos de capa de servicio son de solo lectura, por ejemplo,@Transactional(readOnly=true) - y algunos son de lectura / escritura.

Mi capa de servicio expone un controlador de comandos que ejecuta los comandos que se le pasan en nombre de la capa web.

@Transactional
public Command handle( Command cmd ) throws CommandException

Supongo que tengo razón al hacer el controlador de comandoshandle() Método transaccional. Aquí es donde entra la confusión. Si la implementación de un comando hace llamadas a múltiples métodos de la capa de servicio, no hay forma de que el controlador de comandos sepa si las operaciones llamadas dentro del comando serán de solo lectura, lectura / escritura o una combinación de los dos.

No entiendo cómo funciona la propagación en este ejemplo. Si tuviera que hacer elhandle() métodoreadOnly=true, entonces, ¿qué sucede si el comando llama a un método de capa de servicio que se anota con@Transactional(realOnly=false)?

Apreciaría una mejor comprensión de esto y agradecería sus comentarios ...

Andrés

Respuestas a la pregunta(4)

Su respuesta a la pregunta