27 Mayıs 2019 Pazartesi

SpringData CrudRepository Arayüzü

Giriş
Şu satırı dahil ederiz.
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
Kalıtım
Şeklen şöyle


Bu sınıftan kalıtan JpaRepository arayüzü var. JpaRepository ile findAll(Pageable), findAll(Sort) flush(), saveAndFlush(S) gibi kullanışlı metodlar geliyor

JpaRespository arayüzünü gerçekleştiren sınıf ise SimpleJpaRepository Sınıfı
Bu sınıf altta EntityManager nesnesini kullanır.  Dolayısıyla " JPA Entity Lifecycle" geçerlidir.

Ortak Bir Atadan Kalıtım
Ortak bir atadan kalıtım için @NoRepositoryBean Anotasyonu yazısına bakınız.

Transaction
Bu sınıf otomatik olarak transaction başlatır. Açıklaması şöyle.
CRUD methods on repository instances are transactional by default. For reading operations the transaction configuration readOnly flag is set to true, all others are configured with a plain @Transactional so that default transaction configuration applies.
Tanımlama
Örnek
Şöyle yaparız
@Repository
public interface MyDataRepository extends CrudRepository<Tour, Long> {
  List<MyData> findAll();

  // More functions
}
Metodlar şöyle
long count();
void delete(T entity);
void deleteAll();
void deleteAll(Iterable<? extends T> entities);
void deleteAllById(Iterable<? extends ID> ids);
void deleteById(ID id);
boolean existsById(ID id);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> ids);
Optional<T> findById(ID id);
<S extends T> S save(S entity);
<S extends T> Iterable<S> saveAll(Iterable<S> entities);
save metodu
Örnek ver

saveAll metodu
İmzası şöyle.
@Transactional
public <S extends T> List<S> saveAll(Iterable<S> entities)
Diğer
Repository içine yazdığımız metodlara @Query Anotasyonu ile sql tanımlanabilir. 

Hiç yorum yok:

Yorum Gönder