As you have seen, Spring Data provides an abstract (interface) layer while working with the persistence layer, in order to support various data stores, including relational databases, non-relational databases, map-reduce frameworks, cloud services, and so on. The abstraction starts with the CrudRepository interface, which provides basic CRUD operations, irrespective of the underlying data stores. This interface covers all basic CRUD operations.
Spring Data defines various interfaces, which are specific to each data provider on top of the CrudRepository. For LDAP support, Spring Data supplies the LdapRepository interface, which basically extends the CrudRepository interface, the one that we will extend ...