Spring DATA

Giriş

  • Farklı DB teknolojilerini kullanım ve yönetimini
    tek bir çatı altına toplar.

 

  • Spring DATA JPA
  • Spring DATA MongoDB
  • Redis, Hadoop, Neo4J, Gemfire ...

@Configuration

  • @EnableJpaRepositories
  • @EnableJpaRepositories
  • @Bean(name = "entityManagerFactory")
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>

Repository

  • Tüm Repository operasyonları için temel
    arayüz.
public interface Repository<T, ID extends Serializable> {
}

CrudRepository

public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {
<S extends T> S save(S entity);
T findOne(ID primaryKey);
Iterable<T> findAll();
Long count();
void delete(T entity);
boolean exists(ID primaryKey);
// … ve dahası.
}

PagingAndSortingRepository

public interface PagingAndSortingRepository<T, ID extends Serializable>
extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable);
}

Query Dsl Predicate Executor

public interface QueryDslPredicateExecutor<T> {
T findOne(Predicate predicate);
Iterable<T> findAll(Predicate predicate);
Iterable<T> findAll(Predicate predicate, OrderSpecifier<?>... orders);
Page<T> findAll(Predicate predicate, Pageable pageable);
long count(Predicate predicate);
}

Query Stratejileri

  • CREATE
  • – Metod adı üzerinden
  • USE_DECLARED_QUERY
  • – @Query üzerinden
  • CREATE_IF_NOT_FOUND (varsayılan)
  • – Varsa @Query yoksa Metod adı üzerinden

CountryRepository

public interface CountryRepository extends Repository<Country, String> {
Country findOneByCode(String code);
Country findOneByLocalNameIgnoreCase(String capital);
List<Country> findByContinentAndLifeExpectancy(String continent, Float lifeExpentancy);
List<Country> findByLifeExpectancyLessThan(Float lifeExpentancy);
}

CityRepository

public interface CityRepository extends Repository<City,Integer> {
List<City> findByCountryCode_LocalNameOrderByNameDesc(String localName);
List<City> findByPopulationGreaterThan(Integer population,Pageable pageable);
Page<City> findByCountryCode_CodeLike(String code,Pageable pageable);
@Query("select c from City c where c.name like ?1")
List<City> findSomeCity(String name);
}

CustomRepository

Sorular?

Made with Slides.com