gpt4 book ai didi

java - Java 中的 LDAP 事务

转载 作者:搜寻专家 更新时间:2023-11-01 02:17:16 25 4
gpt4 key购买 nike

我必须为我们的用户管理工具创建批量插入功能。我们使用 spring LDAP 构建了一个小型内部库,一切都适用于单用户管理 (CRUD)。

我想尝试一次插入数百条记录,如果出现问题则回滚。

有没有办法像在数据库中那样在 LDAP 中创建事务?

感谢您的想法。

最佳答案

这是@adrianboimvaser 的后续。

请注意,Spring LDAP transaction support不使用 XA 事务而是“逻辑”补偿事务,因此 LDAP 的回滚将是针对 LDAP 的补偿操作。虽然这是对无事务的改进,但请注意,这与“就像它存在于数据库中”的典型事务不同。即 ACID不支持事务的属性。

Note that even though the same logical transaction is used, this is not a JTA XA transaction; no two-phase commit will be performed, and thus commit and rollback may yield unexpected results.

例如:如果您要向 LDAP 添加 100 个条目,则每条记录将被一条一条地添加到 LDAP。如果最后一次添加失败,则回滚操作将删除事务中先前创建的 99 个条目。但是,如果由于某种原因(例如,网络连接下降到 LDAP,这是导致第 100 个条目失败的原因)实际上无法删除前 99 个条目,那么即使您尝试回滚事务,您也会在数据库和 LDAP。即 LDAP 中将有 99 条记录(因为它们无法删除)在数据库中不存在(因为这些记录从未被插入或实际上被回滚)。

我不确定您的情况是什么,但是如果您经常对 LDAP 进行大量更新,您可能需要考虑使用实际数据库来避免事务麻烦并优化性能,因为 LDAP 是为快速读取而设计的,相对写入速度较慢。

关于java - Java 中的 LDAP 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com