Spring Data에서는 메서드의 이름만으로 쿼리를 할 수 있는 기능을 제공한다.
MongoTemplate
을 사용하여 사용자를 이름으로 조회하는 쿼리는 아래와 같다.
@Repository
public class UserRepository {
@Autowired
private MongoTemplate mongo;
public List<User> findByName(String name) {
Criteria criteria = Criteria.where("name").is(name);
Query query = new Query(criteria);
return mongo.find(query, User.class, "user");
}
}
이는 아래와 같이 줄일 수 있다. 코드가 훨씬 짧아졌다.
@Repository
public interface UserRepository extends MongoRepository<User, String> {
List<User> findByName(String name);
}
2개 이상의 조건으로 쿼리를 하면 중간에 And, Or등의 단어를 넣어서 연결해준다.
이메일 주소와 이름으로 유저를 검색하는 예시는 아래와 같다.
public interface UserRepository extends Repository<User, Long> {
List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
And, Or과 같이 쿼리와 매핑되는 키워드에 대한 정보는 여기에서 확인할 수 있다.
findById와 같이 간단한 쿼리의 경우 쿼리에 대한 코드를 별도로 작성할 필요가 없어서 생산성이 늘어난다.
쿼리 조건이 길어질수록 가독성이 급격히 떨어진다. 예를들어 사용자를 조회하는데 이름, 나이, 이메일로 조회한다면
findByNameAndAgeAndEmail이라는 메서드명을 사용해야 할 것이다.
IntelliJ에서 Spring Boot와 Jrebel 연동시 수정사항이 제대로 반영 안되는 현상 해결 (0) | 2017.08.25 |
---|---|
Java : Wrapper Class 활용 - primitive타입에 null을 표현하자. (0) | 2017.08.14 |
Spring : 트러블 슈팅 : Controller에서 객체 반환시 json으로 변환이 되지 않는 경우 (3) | 2017.08.09 |
트러블 슈팅 : Spring으로 구성된 API에서 @ResponseBody시 한글 깨짐 현상 (0) | 2017.08.06 |
MongoDB : Amazon Linux에 설치 및 설정하기 (0) | 2017.08.02 |
댓글 영역