[java] Hibernate에서 네이티브 SQL을 사용하는 방법은?

Hibernate는 자바 영속성 프레임워크로, 관계형 데이터베이스와의 상호작용을 쉽게 처리할 수 있게 해줍니다. Hibernate를 사용하면 객체 지향적인 방식으로 데이터를 다룰 수 있으며, 데이터베이스 쿼리 작성에 편리한 기능을 제공합니다. 그러나 때로는 네이티브 SQL 쿼리를 사용해야 할 때가 있습니다. Hibernate에서 네이티브 SQL을 사용하는 방법을 알아보겠습니다.

1. 네이티브 SQL 작성하기

네이티브 SQL을 작성할 때는 데이터베이스에 맞는 SQL 문법을 사용해야 합니다. Hibernate에서 네이티브 SQL을 사용하기 위해서는 createSQLQuery() 메서드를 사용합니다.

String sql = "SELECT * FROM employees";
SQLQuery query = session.createSQLQuery(sql);

위의 예제에서는 “SELECT * FROM employees”라는 네이티브 SQL 쿼리를 작성하고, 이를 createSQLQuery() 메서드를 사용하여 Hibernate의 SQLQuery 객체로 생성했습니다.

2. 네이티브 SQL 실행하기

네이티브 SQL을 실행하기 전에 Hibernate의 Transaction을 시작해야 합니다. 그리고 list() 메서드를 사용하여 쿼리를 실행하고, 결과를 받아올 수 있습니다.

Transaction tx = session.beginTransaction();
List<Object[]> result = query.list();
tx.commit();

위의 예제에서는 쿼리를 실행하기 위해 list() 메서드를 호출하고, 결과를 List<Object[]>로 반환받았습니다. 각 레코드는 Object[] 배열로 나타나며, 배열의 각 인덱스는 컬럼의 값을 나타냅니다.

3. 결과 처리하기

네이티브 SQL의 결과를 처리하기 위해서는 반복문을 사용하여 각 레코드의 값을 읽어올 수 있습니다.

for (Object[] row : result) {
    int id = (int) row[0];
    String name = (String) row[1];
    int age = (int) row[2];
    System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}

위의 예제에서는 Object[] 배열에서 각 컬럼의 값을 추출하여 변수에 할당하고, 그 값을 출력했습니다.

이렇게 Hibernate에서 네이티브 SQL을 사용하는 방법을 알아보았습니다. Hibernate의 createSQLQuery() 메서드로 네이티브 SQL을 작성하고, list() 메서드로 쿼리를 실행한 뒤 결과를 처리할 수 있습니다.

참고: