[java] 자바에서의 ORM과 JDBC 비교
이번 글에서는 자바 어플리케이션에서 데이터베이스와의 상호작용을 위해 사용되는 두 가지 주요 기술인 ORM(Object-Relational Mapping)과 JDBC(Java Database Connectivity)에 대해 비교해보겠습니다.
JDBC(Java Database Connectivity)
JDBC는 자바 어플리케이션과 데이터베이스 간의 연결을 제공하는 자바 API입니다. JDBC를 사용하면 데이터베이스에 SQL 쿼리를 보내고, 결과를 받아와서 애플리케이션에서 처리할 수 있습니다. 여기서 개발자가 SQL 쿼리를 직접 작성해야 하며, 데이터베이스와의 연결, 트랜잭션 관리, 예외 처리 등을 모두 직접 구현해야 합니다.
아래는 JDBC를 사용한 데이터베이스 연동의 간단한 예시입니다.
import java.sql.*;
public class JDBCTutorial {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "username";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
while (rs.next()) {
System.out.println(rs.getString("username") + "\t" + rs.getString("email"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
ORM(Object-Relational Mapping)
반면에 ORM은 객체 지향 프로그래밍 언어(예: 자바)와 관계형 데이터베이스 간의 데이터를 변환하는 기술입니다. ORM 프레임워크를 사용하면 데이터베이스와의 상호작용을 객체 지향적으로 다룰 수 있으며, SQL 쿼리를 직접 작성하지 않아도 됩니다. 개발자는 데이터베이스 테이블을 객체로 매핑하여 데이터를 다룰 수 있습니다.
다음은 ORM 프레임워크인 Hibernate를 사용한 데이터베이스 연동 예시입니다.
public class User {
private String username;
private String email;
// getters and setters
}
public class HibernateTutorial {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
List<User> users = session.createQuery("FROM User", User.class).list();
for (User user : users) {
System.out.println(user.getUsername() + "\t" + user.getEmail());
}
session.close();
sessionFactory.close();
}
}
결론
JDBC와 ORM은 각각의 장단점이 있습니다. JDBC를 사용하면 SQL에 대한 직접적인 제어가 가능하고, ORM은 객체 지향적인 코드를 작성할 수 있어 유지보수와 생산성 측면에서 이점을 가집니다. 개발자는 프로젝트의 요구사항과 특성에 따라 적합한 기술을 선택하여 사용해야 합니다.