Giriş
Custom metod bence sadece @Query anotasyonu yetersiz kaldığı zaman kullanılmalı. @Query ile çok şeyler yapılabiliyor.
1. SpringData JpaRepository ile @Query ve Join
2. SpringData JpaRepository ile @Query ve Join + Wheren In Clause
3. SpringData JpaRepository İle JpaSpecification yazısına taşıdım
Custom metod bence sadece @Query anotasyonu yetersiz kaldığı zaman kullanılmalı. @Query ile çok şeyler yapılabiliyor.
1. SpringData JpaRepository ile @Query ve Join
2. SpringData JpaRepository ile @Query ve Join + Wheren In Clause
3. SpringData JpaRepository İle JpaSpecification yazısına taşıdım
Kullanım
1. Custom Repository arayüzümüzü ve içindeki custom metod imzasını tanımlarız.
2. Normal Spring Repository (ismi FooRepository olsun) sınıfını tanımlarız ama hem JpaRepository hem deCustom Repository arayüzden kalıtırız.
2. FooRepositoryImpl isimli bir sınıf tanımlarız ve Custom Repository arayüzdeki metodu gerçekleştiririz
Örnek
Şöyle yaparız. Burada önce repository arayüzümüzü hem JpaRespository'den hem de kendi sınıfımızdan kalıtıyoruz.
public interface AccountRepository
extends JpaRepository<Account, Long>, AccountRepositoryCustom { ... }
public interface AccountRepositoryCustom {
public void customMethod();
}
Daha sonra kendi özel arayüzümüzdeki metodu gerçekleştiriyoruz. Şöyle yaparızpublic class AccountRepositoryImpl implements AccountRepositoryCustom {
@PersistenceContext
private EntityManager em;
public void customMethod() {
...
em.createQuery(yourCriteria);
...
}
}
Burada sınıfımızın ismi AccountRepositoryImpl olmak zorunda. Açıklaması şöyle.For >= 2.0 the implementation has to be named as the custom interface with an additional Impl suffix.
Örnek
Şöyle yaparız
//Custom Repository with custom method
public interface EmployeeCustomizedRepository {
List<Employee> getUserWithCustomQuery();
}
// Spring Repository inherits from JpaRepository + Custom Repository
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Integer>,
EmployeeCustomizedRepository {
List<Employee> findUserByLastName(String lastname);
List<Employee> findUserByFistName(String firstname);
}
//Repository implementation with custom method
public class EmployeeCustomizedRepositoryImpl implements EmployeeCustomizedRepository {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<Employee> getUserWithCustomQuery() {
List<Employee> userList = entityManager
.createQuery("Select e from Employee e")
.getResultList();
// Do the necessary tasks
return userList;
}
}
Şeklen şöyle
Hiç yorum yok:
Yorum Gönder