데이터 필터링과 정렬

Java에서 PostgreSQL 데이터베이스 질의하기

Miller Trujillo

Staff Software Engineer

왜 필터링과 정렬이 필요한가?

  • 대부분의 앱은 모든 레코드를 보여주지 않음
  • 결과를 좁혀야 함
  • 데이터를 의미 있게 정리
  • 보기 쉬운 단위로 표시

$$

$$

$$

$$

  • WHERE, ORDER BY, LIMIT, OFFSET

온라인 서점

Java에서 PostgreSQL 데이터베이스 질의하기

WHERE로 필터링

String sql = "SELECT * FROM books WHERE publication_year > ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 2000); ResultSet rs = pstmt.executeQuery();
  • ? 플레이스홀더를 쓰고 setInt()로 바인딩
  • Java 코드는 그대로, SQL만 변경
Java에서 PostgreSQL 데이터베이스 질의하기

대신 Java에서 필터링할 수 있을까?

  • 데이터베이스에서 필터링:
    • 전송 데이터 감소 ✅
    • 네트워크 혼잡 방지 ✅
    • 성능 향상 ✅
  • 예외: 복잡한 로직(외부 API, AI 모델) 💡

음식 주문 비유

Java에서 PostgreSQL 데이터베이스 질의하기

ORDER BY로 정렬

String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year DESC";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 3);
ResultSet rs = pstmt.executeQuery();
// Adding dynamic behavior
boolean desc = true;
String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year ";

sql += desc ? "DESC" : "ASC";
  • +=는 SQL 문자열에 텍스트를 덧붙임
  • ?:는 3항 연산자(간단한 if-else)
Java에서 PostgreSQL 데이터베이스 질의하기

LIMIT와 OFFSET으로 페이지네이션

  • LIMIT: 반환할 행 수 제어
  • OFFSET: 결과 반환 전 앞의 행 건너뛰기
  • ORDER BY: 페이지 간 일관된 결과 보장
String sql = "SELECT title FROM books ORDER BY title ASC LIMIT ? OFFSET ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 10); // LIMIT: 페이지당 10권 pstmt.setInt(2, 20); // OFFSET: 처음 20행 건너뛰기 ResultSet rs = pstmt.executeQuery();
Java에서 PostgreSQL 데이터베이스 질의하기

연습해 봅시다!

Java에서 PostgreSQL 데이터베이스 질의하기

Preparing Video For Download...