Probablemente necesite cambiar su nivel de aislamiento.
Aquí hay alguna información: http://www.interview-questions-tips-forum.net/index.php/Your-Questions-on-Java/JDBC-Transaction/Transaction-Isolation-Levels
Habla de los diferentes niveles de aislamiento, y lo que puede ayudar a proteger contra. La forma general de hacerlo es comenzar con el terminista y luego ir más bajo si necesita mejores tiempos de respuesta, teniendo en cuenta los requisitos de integridad de datos/lecturas falsas. los niveles de transacción
edición
primavera se utilizan para JDBC resumen (o lo que sea) niveles de aislamiento de transacción en el administrador de transacciones. Se definen en la clase TransactionDefinition y son miembros estáticos.
TransactionDefinition.ISOLATION_DEFAULT
Default isolation
TransactionDefinition.ISOLATION_READ_UNCOMMITTED
Lowest level of isolation; allows transactions to see uncommitted modifications from other transactions
TransactionDefinition.ISOLATION_READ_COMITTED
Cannot read uncommitted data
TransactionDefinition.ISOLATION_REPEATABLE_READ
Ensures repeatable reads
TransactionDefinition.ISOLATION_SERIALIZABLE
Most reliable; all transactions are executed atomically, and are treated as though they occurred serially.
También hay niveles de propagación de transacciones. Puede estar utilizando una transacción para lecturas puras, que pueden ser excesivas: las lecturas no requieren transacciones, las escrituras SIEMPRE deben tener una transacción a su alrededor. Los niveles de propagación son definitivos en TransactionDefinition también. Estos se utilizan, generalmente en un archivo de cableado de primavera, para definir la serialización y la propagación de una llamada en particular. Si tiene un ejemplo de su cableado, podría darle más pistas/información.
No estoy seguro de mis límites de transacción. Tengo @transactional en mis métodos DAO que necesitan una transacción, pero también tengo @transactional en mi punto de entrada al código que usa DAO. Si elimino el anterior, me da un error de no transacción. Es algo que estoy investigando actualmente. Visite http://stackoverflow.com/questions/807457/ –
Mi @Transactional estaba muy lejos, una vez que lo eliminé, el proceso funciona bien sin bloquear la base de datos. Todavía tengo algunos problemas extraños @Transactional, pero para este proceso lo resolví simplemente confiando en transacciones más pequeñas. Esta pregunta también fue útil http://stackoverflow.com/questions/1079114. –