Это продолжение @ adrianboimvaser.
Просто отметим, что поддержка Spring LDAP-транзакций использует не транзакции XA, а «логические» компенсирующие транзакции, поэтому откат LDAP будетбыть компенсирующим действием против LDAP.Хотя это улучшение по сравнению с отсутствием транзакций, имейте в виду, что это не то же самое, что обычная транзакция, «как в базах данных».т.е. свойства транзакций ACID не поддерживаются.
Обратите внимание, что даже если используется та же логическая транзакция, это не транзакция JTA XA;двухфазная фиксация выполняться не будет, и, таким образом, фиксация и откат могут привести к неожиданным результатам.
Например: если вы добавляете 100 записей в LDAP, каждая запись будет добавляться одна за другой в LDAP.Если при последнем добавлении произойдет сбой, действие отката будет заключаться в удалении ранее созданных 99 записей в транзакции.Однако, если по какой-либо причине (например, сетевое подключение не работает до LDAP, что и послужило причиной сбоя для 100-й записи), первые 99 записей не могут быть фактически удалены, даже если вы попытались откатить транзакцию, у вас будет несоответствие междубаза данных и LDAP.т.е. в LDAP будет 99 записей (потому что они не могут быть удалены), которых нет в базе данных (потому что эти записи никогда не были вставлены или фактически были откачены).
Я не уверен, что выСитуация такова, но если у вас частые крупные обновления LDAP, вы можете рассмотреть возможность использования реальной базы данных, чтобы избежать головной боли при транзакциях, а также оптимизировать производительность, поскольку LDAP предназначен для быстрого чтения с относительно медленной записью.