lunes, 13 de febrero de 2012

Más de Spring Data y MongoDB

Sigo leyendo sobre spring-data un proyecto que se las trae. Ahora vamos analizar el proyecto Spring Data con MongoDB.

Repository es la interfaz más general de Spring Data; CRUDRepository extiende esta y agrega metodos basicos para hacer las operaciones CRUD.


public interface CrudRepository
    extends Repository {
                                                                                         
    T save(T entity);
                                                                                         
    T findOne(ID primaryKey);
                                                                                         
    Iterable findAll();

    Long count();
                                                                                         
    void delete(T entity);
                                                                                         
    boolean exists(ID primaryKey);
                                                                                         
    // … more functionality omitted.
}



PagingAndSortingRepository nos provee los metodos de busqueda:


public interface PagingAndSortingRepository extends CrudRepository {

    Iterable findAll(Sort sort);

    Page findAll(Pageable pageable);
}





Donde Pageable es una clase que sirve para paginar; por ejemplo si quisieramos ir a 2 pagina y la pagina va cada 20 filas se debe instanciar de la siguiente manera: new PageRequest(1, 20)

Seteamos spring para que cree los proxys de nuestra interfaces:


  






Luego inyectamos el objeto a la clase que lo deberia usarlo:

public class SomeClient {

  @Autowired
  private PersonRepository repository;

  public void doSomething() {
    List persons = repository.findByLastname("Matthews");
  }
}




Tambien se pueden definir implementaciones para las interfaces por ejemplo si tenemos un metodo particular. Simplemente hay que definir la implementación:


interface UserRepositoryCustom {

  public void someCustomMethod(User user);
}


class UserRepositoryImpl implements UserRepositoryCustom {

  public void someCustomMethod(User user) {
    // Your custom implementation
  }
}


Como se puede ver no hay que extender de ninguna clase de Spring data, ni hay que hacer algo raro. Ahora hacemos la interfaz posta, la cual va tener los metodos que provee Spring Data y el metodo custom:


public interface UserRepository extends CrudRepository, UserRepositoryCustom {

  // Declare query methods here
}



Esa es una primera parte de Spring Data con MongoDB. Mientras voy aprendiendo escribo algo acá!

Dejo link:
http://static.springsource.org/spring-data/data-document/docs/current/reference/html/