[java] 퍼시스턴스 라이브러리와 JDBC 비교

Java 애플리케이션을 개발하다보면 데이터베이스와의 상호작용이 필수적입니다. 이를 위해 JDBC를 사용하여 SQL 쿼리를 실행하고 ResultSet을 처리하는 것이 대표적인 방법입니다. 그러나 최근에는 더 추상화된 Persistence 라이브러리가 많이 사용되고 있습니다. 이번 글에서는 Persistence 라이브러리와 JDBC를 비교해보고자 합니다.

JDBC

JDBC(Java Database Connectivity)는 Java 애플리케이션이 데이터베이스와 상호작용하기 위한 표준 인터페이스입니다. JDBC를 사용하면 데이터베이스에 연결하여 SQL 쿼리를 실행하고 결과를 처리할 수 있습니다. JDBC를 사용하면 SQL문을 직접 작성해야 하고, ResultSet을 이용하여 결과를 반복적으로 처리해야 합니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCSample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String user = "username";
        String password = "password";
        
        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users");
             ResultSet rs = stmt.executeQuery();) {
            while (rs.next()) {
                System.out.println(rs.getString("username"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Persistence 라이브러리

Persistence 라이브러리는 JDBC보다 더 추상화된 인터페이스를 제공하여 데이터베이스와의 상호작용을 간소화합니다. 대표적으로 Hibernate, JPA(Java Persistence API), MyBatis 등이 있습니다. 이러한 라이브러리를 사용하면 SQL 쿼리를 직접 작성하는 대신 객체 지향적인 방식으로 데이터베이스 조작이 가능합니다. 또한, 많은 반복적이고 일상적인 작업들을 대신 처리해주어 개발자가 보다 효율적으로 개발할 수 있습니다.

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String username;
    
    // getters and setters
}

public class PersistenceSample {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPersistenceUnit");
        EntityManager em = emf.createEntityManager();
        
        List<User> users = em.createQuery("SELECT u FROM User u", User.class).getResultList();
        
        for (User user : users) {
            System.out.println(user.getUsername());
        }
        
        em.close();
        emf.close();
    }
}

결론

Persistence 라이브러리는 JDBC보다 더 추상화된 인터페이스를 제공하여 개발자가 보다 편리하게 데이터베이스와의 상호작용을 처리할 수 있습니다. 하지만, 각각의 라이브러리마다 장단점이 있으므로 실제 프로젝트에서는 상황에 맞게 적절한 라이브러리를 선택하는 것이 중요합니다.

참고 자료