Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

JDBC ResultSetMetaData란 무엇일까? 핵심 개념과 주요 메서드 총정리

ResultSetMetaData란 무엇인가?

JDBC에서 ResultSetMetaData는 SQL 실행 후 얻은 ResultSet 객체의 구조 정보를 제공하는 인터페이스입니다. 이를 활용하면 코드를 직접 확인하지 않고도 다음과 같은 메타데이터를 동적으로 파악할 수 있습니다.

  • 결과 집합에 포함된 컬럼(열)의 개수
  • 컬럼의 이름 및 레이블
  • 컬럼의 데이터 타입
  • 데이터가 속한 테이블 이름

ResultSet 객체에서 getMetaData() 메서드를 호출하면 ResultSetMetaData 인스턴스를 손쉽게 얻을 수 있습니다.

ResultSetMetaData의 주요 메서드

자주 사용되는 대표적인 메서드는 다음과 같습니다.

메서드설명
getColumnCount()현재 ResultSet 객체에 포함된 컬럼의 개수를 반환합니다.
getColumnLabel()SQL의 AS 절 등으로 지정된 컬럼의 권장 이름(레이블)을 반환합니다.
getColumnName()데이터베이스에 저장된 실제 컬럼 이름을 반환합니다.
getTableName()해당 컬럼이 속한 테이블의 이름을 반환합니다.

사용 예제

다음은 MySQL 데이터베이스에 연결한 뒤, Dataset 테이블을 조회하고 ResultSetMetaData로 컬럼 정보를 출력하는 전체 예제입니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class ResultSetMetadataExample {
    public static void main(String args[]) throws Exception {
        // 드라이버 등록
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        // 데이터베이스 연결
        String mysqlUrl = "jdbc:mysql://localhost/TestDB";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established......");
        // Statement 객체 생성
        Statement stmt = con.createStatement();
        // 데이터 조회
        ResultSet rs = stmt.executeQuery("select * from Dataset");
        ResultSetMetaData rsMetaData = rs.getMetaData();
        // 컬럼 개수 출력
        System.out.println("Number of columns: " + rsMetaData.getColumnCount());
        // 컬럼 레이블 출력
        System.out.println("Column Label: " + rsMetaData.getColumnLabel(1));
        // 컬럼 이름 출력
        System.out.println("Column Name: " + rsMetaData.getColumnName(1));
        // 테이블 이름 출력
        System.out.println("Table Name: " + rsMetaData.getTableName(1));
    }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Connection established......
Number of columns: 2
Column Label: mobile_brand
Column Name: mobile_brand
Table Name: dataset

ResultSetMetaData가 중요한 이유

ResultSetMetaData는 쿼리 결과의 구조를 실행 시점에 동적으로 알아낼 수 있게 해준다는 점에서 매우 유용합니다. 대표적인 활용 사례는 다음과 같습니다.

  • 범용 데이터 조회 도구 개발: 테이블 구조를 미리 알지 못해도 화면에 결과를 자동으로 표시할 수 있습니다.
  • 동적 보고서 생성: 엑셀이나 CSV 내보내기처럼 컬럼 구성이 유동적인 기능을 구현할 때 필수적입니다.
  • 데이터 검증: 컬럼 개수와 타입을 확인하여 애플리케이션 로직에서 안전하게 데이터를 처리할 수 있습니다.

이처럼 ResultSetMetaData를 활용하면 하드코딩 없이 유연하고 확장 가능한 JDBC 기반 애플리케이션을 작성할 수 있습니다.