Bean Persistence

Ldaptive provides an API similar to the J2EE entity manager to facilitate reading and writing LDAP data with Java beans. This support is provided in a separate library that is available in the jars directory of the latest download.

Or included as a maven dependency:


The interface for ldap entry manager looks like:

public interface LdapEntryManager<T>
  T find(T object) throws LdapException;

  Response<Void> add(T object) throws LdapException;

  Response<Void> merge(T object) throws LdapException;

  Response<Void> delete(T object) throws LdapException;


Ldaptive provides a default implementation of the LdapEntryManager which delegates to the appropriate add, merge, or delete operation.

Simple Java bean to illustrate usage:

  dn = "distinguishedName"
  attributes = {
    @Attribute(name = "displayName", property = "name"),
    @Attribute(name = "mail", property = "email"),
    @Attribute(name = "telephoneNumber", property = "phoneNumber"),
public class MyObject
  private String distinguishedName;
  private String name;
  private String email;
  private String phoneNumber;

  public MyObject() {}

  public MyObject(String dn) { distinguisedName = dn; }

  public String getDistinguishedName() { return distinguishedName; }

  public String getName() { return name; }

  public void setName(String s) { name = s; }

  public String getEmail() { return email; }

  public void setEmail(String s) { email = s; }

  public String getPhoneNumber() { return phoneNumber; }

  public void setPhoneNumber(String s) { phoneNumber = s; }

Perform some common operations against the LDAP:

DefaultLdapEntryManager<MyObject> manager = new DefaultLdapEntryManager<MyObject>(
  new DefaultLdapEntryMapper<MyObject>(), new DefaultConnectionFactory("ldap://"));

// add a new entry to the LDAP
MyObject addObject = new MyObject("uid=dfisher,ou=people,dc=ldaptive,dc=org");
addObject.setName("Daniel Fisher");

// modify the entry in the LDAP
MyObject mergeObject = manager.find(new MyObject("uid=dfisher,ou=people,dc=ldaptive,dc=org"));