Frühling Transaktionen Mit Unterstützt Vermehrung
Ich würde das gerne verstehen mit der Verwendung von einer Feder Transaktion mit der Vermehrung Unterstützt. Die java-docs erwähnen, dass, wenn die Methode, die hat @Transactional(propagation = Propagation.SUPPORTS)
Aufruf innerhalb einer Transaktion unterstützt die Transaktion aber, wenn keine Transaktion vorhanden ist, wird die Methode ausgeführt, die nicht-transaktional.
Ist das nicht schon das Verhalten der Frühjahr Transaktionen unabhängig von Propagation.SUPPORTS
?
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
Im obigen code-Beispiel, unabhängig davon, ob methodWithSupportsTx()
hat @Transactional(propagation = Propagation.SUPPORTS)
Anmerkung es würde ausgeführt werden, in einer Transaktion, je nachdem, ob methodWithRequiredTx()
hat @Transactional
annotation, richtig?
Also, was ist die Notwendigkeit/Nutzung der mit einer Vermehrung Ebene UNTERSTÜTZT?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom javadoc:
So, es bedeutet, dass, zum Beispiel, mehrere Aufrufe von Hibernate ist
SessionFactory.getCurrentSession()
innenmethodWithSupportsTx()
zurückkehren würde, aus der gleichen session.@Transactional
Versuch zu nennengetCurrentSession()
mit typischen KonfigurationHibernateTransactionManager
produzieren würde "Keine Hibernate-Session gebunden, Faden, und die Konfiguration nicht erlaubt die Erstellung von non-transactional one here" Ausnahme.SUPPORTS
macht keinen Unterschied.Einer gewünschten Transaktion wird eine neue Transaktion, falls keine vorhanden ist. Daher eine neue Transaktion vorgenommen werden würden, wenn Sie anrufen serviceBean.methodWithSupportsTx(). Wenn deine Methode ist wirklich Transaktions -, erhalten Sie eine Fehlermeldung vom Frühjahr, wenn keine Transaktion vorhanden ist.