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:

 <dependencies>
  <dependency>
    <groupId>org.ldaptive</groupId>
    <artifactId>ldaptive-beans</artifactId>
    <version>2.4.0</version>
  </dependency>
</dependencies>

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;
}

DefaultLdapEntryManager

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

Simple Java bean to illustrate usage:

@Entry(
  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://directory.ldaptive.org"));

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

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