티스토리 뷰
Sort
Sort는 엔티티 데이터를 정렬하는 기능입니다.
Sort를 사용하면 엔티티를 특정 기준으로 정렬하여 반환할 수 있습니다.
Sort를 사용하는 이유
데이터 정렬: 엔티티 데이터를 특정 기준(예: 이름, 가격, 등록일 등)으로 정렬하여 반환가능
사용자 경험 향상: 정렬된 데이터를 사용자에게 제공
데이터 처리 효율성: 정렬된 데이터를 사용하면 추가적인 정렬 작업 없이 데이터를 처리
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
// 엔티티 클래스
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private int price;
private LocalDateTime createdAt;
}
// 리포지토리 인터페이스
public interface ProductRepository extends JpaRepository<Product, Long> {
List<Product> findAll(Sort sort);
}
// 서비스 클래스
@Service
public class ProductService {
private final ProductRepository productRepository;
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
public List<Product> getAllProducts() {
// 가격 내림차순으로 정렬
Sort sort = Sort.by(Sort.Direction.DESC, "price");
return productRepository.findAll(sort);
}
public List<Product> getProductsSortedByName() {
// 이름 오름차순으로 정렬
Sort sort = Sort.by(Sort.Direction.ASC, "name");
return productRepository.findAll(sort);
}
public List<Product> getProductsSortedByCreatedAt() {
// 등록일 내림차순으로 정렬
Sort sort = Sort.by(Sort.Direction.DESC, "createdAt");
return productRepository.findAll(sort);
}
}
ProductRepository에 정의된 findAll(Sort sort) 메서드를 사용하여 엔티티 데이터를 정렬하는 방법을 보여줍니다. Sort 객체를 생성할 때 정렬 기준(속성 이름)과 정렬 방향(오름차순, 내림차순)을 지정할 수 있습니다.
ProductService에서는 가격, 이름, 등록일 기준으로 정렬된 Product 엔티티 목록을 반환하는 메서드를 제공합니다.
Sort를 사용하면 데이터베이스 쿼리 단계에서 정렬 작업이 수행되므로, 애플리케이션 단에서 별도의 정렬 로직을 작성할 필요가 없습니다.