데이터베이스 연동은 자바 애플리케이션에서 필수적인 부분입니다. 함수형 프로그래밍은 코드를 더 간결하고 유연하게 만들어주는 강력한 접근 방식이며, 자바 8부터는 함수형 인터페이스를 이용하여 데이터베이스 연동을 구현할 수 있습니다.
데이터베이스 연동을 위해 자바의 JDBC(Java Database Connectivity)라이브러리를 사용할 수 있습니다. 이 라이브러리는 데이터베이스에 연결하고 쿼리를 실행하며 결과를 받아오는 기능을 제공합니다.
먼저, 함수형 인터페이스를 정의해야 합니다. JDBC를 사용하여 데이터베이스와 연동할 때는 SQL문을 실행하는 과정을 인터페이스로 추상화할 수 있습니다. 예를 들어, 다음과 같은 DatabaseRunner
라는 함수형 인터페이스를 정의할 수 있습니다.
@FunctionalInterface
public interface DatabaseRunner {
void run(Connection connection) throws SQLException;
}
이제 이 인터페이스를 사용하여 데이터베이스 연동을 구현할 수 있습니다. 예를 들어, SELECT 쿼리를 실행하고 결과를 출력하는 executeQuery
메서드는 다음과 같이 작성할 수 있습니다.
public void executeQuery(String sql, DatabaseRunner runner) {
try (Connection connection = DriverManager.getConnection(url, username, password)) {
runner.run(connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
위의 예제에서 executeQuery
메서드는 데이터베이스 연결을 수행한 후, DatabaseRunner
를 이용하여 쿼리를 실행합니다. Connection
객체를 파라미터로 전달하여 함수형 인터페이스 내부에서 실제 쿼리를 실행할 수 있습니다.
실제로 executeQuery
메서드를 호출할 때는 람다식을 사용하여 DatabaseRunner
인터페이스의 구현체를 전달할 수 있습니다. 아래는 SELECT * FROM users
쿼리를 실행하고 결과를 출력하는 예제입니다.
executeQuery("SELECT * FROM users", connection -> {
try (Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
while (resultSet.next()) {
System.out.println(resultSet.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
}
});
위의 예제를 통해 자바 함수형 인터페이스를 사용하여 데이터베이스 연동을 구현하는 방법을 알아보았습니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있으며, 함수형 프로그래밍의 장점을 활용할 수 있습니다.