¿Necesita una transacción de base de datos para leer datos?

Cuando intento leer datos de la base de datos, al menos usando

((Session)em.getDelegate()).createCriteria()

una excepción son los lanzamientos que dicen que una transacción no está presente.

Cuando agrego la anotación:

@Transactional(
    value = SomeClass.TRANSACTIONAL_MANAGER, 
    propagation = Propagation.SUPPORTS, 
    readOnly = true
)

funciona bien.

Sin embargo, dado que la lectura ocurrirá millones de veces por segundo para acceder y leer datos, quiero asegurarme de que nuestro entorno no se obstruya innecesariamente.

Si no, ¿cuál es el costo de crear un solo lectura?Propagation.Supports ¿transacción?

¿No puedo crear una consulta de criterios de Hibernate sin una transacción, en combinación con Spring?

Respuestas a la pregunta(2)

Su respuesta a la pregunta