25 Haziran 2018 Pazartesi

SpringData @NoRepositoryBean Anotasyonu

Giriş
Repository olarak yüklenmesini istemediğiniz soyut sınıflara bu anotasyon eklenir. Genellikle  CrudRepository veya Repository arayüzünden kalıtan bir ata Repository arayüzü tanımlamak için kullanılır.

Örnek - Read-only Sadece View İçin Repository
Şöyle yaparız. Burada CrudRepository yerine Repository arayüzünden kalıtıyoruz.
@NoRepositoryBean
public interface ReadOnlyRepository<T, ID> extends Repository<T, ID> {

  List<T> findAll();0

  List<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);

  Optional<T> findById(ID id);

  long count();
}

public interface XYZRepository extends ReadOnlyRepository<XYZView, Long> {

  List<XYZView> findByColumn(String column);
}
Örnek
Elimizde şöyle bir kod olsun.
@NoRepositoryBean
public interface BaseRepository<T extends BasicEntity> extends CrudRepository<T, Long> {

  public T findByName(String name);

}
Şöyle yaparız.
public interface DerivedRepository extends BaseRepository<User> { /* ... */ }
Örnek
Elimizde şöyle bir kod olsun.
@NoRepositoryBean
public interface AbstractRepository 
        extends CrudRepository<T extends AbstractEquipment,Long>{

  @Query("select e from #{#entityName} as e from equipment where
    e.name = equipmentName")
  T findEquipmentByName(String equipmentName);

}
Şöyle yaparız.
@Transactional
public interface FooRepository extends AbstractRepository<SpecialEquipment,Long>{

}

Hiç yorum yok:

Yorum Gönder