[내일배움캠프 Spring 3기] Spring Data JPA

jiiim_ni·2026년 2월 7일

JDBC란?

JDBC 자바 프로그램에서 데이터베이스에 접속하고 SQL 문을 실행하기 위한 도구

JDBC로 할 경우)

// JDBC
public class UserDaoJdbc {

    public User findByName(String name) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        User user = null;

        try {
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/hello", "user", "password");

            String sql = "SELECT id, name, email, age FROM users WHERE name = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            rs = pstmt.executeQuery();

            if (rs.next()) {
                user = new User();
                user.setId(rs.getLong("id"));
                user.setName(rs.getString("name"));
                user.setEmail(rs.getString("email"));
                user.setAge(rs.getInt("age"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) rs.close();
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return user;
    }
}

JPA로 할 경우)

public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByName(String name);
}

JDBC보다 JPA가 훨씬 간단하고 사용하기 편한 것을 알 수 있음


JPA란?

객체 지향 프로그래밍 언어인 Java와 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하여 데이터베이스 작업을 객체 지향적으로 수행할 수 있도록 지원하는 ORM
SQL을 직접 작성하지 않고도 객체 조작을 통해 DB 작업을 수행할 수 있도록 표준화된 인터페이스를 제공

  • JPA는 인터페이스니, 구현체가 있어야하는데 그 구현체는 보통 Hibernate라는 것을 씀

  • 즉, Hibernate는 구현체이므로 Hibernate 설정(=방언, dialect)을 통해 어떤 RDBMS를 사용할지 결정할 수 있음

  • 또한 Hibernate가 실질적인 구현체라는 뜻은 Hibernate가 JDBC를 활용해 DB와 통신을 한다는 뜻이기도 함

JPA조차도 더 쉽게 사용하기 위해 Spring Data JPA를 사용함
일반적으로 JPA = Spring Data JPA

  • JDBC: 자바와 데이터베이스를 잇는 기본 통신 기술 (API)
  • JPA: '이렇게 ORM을 만들어라'고 정해놓은 인터페이스
  • Hibernate: JPA 설계도에 따라 만들어진 가장 유명한 실제 제품 (구현체).
    이 제품은 내부적으로 JDBC를 사용하며, MySQL, Oracle 등 다양한 데이터베이스와 통신할 수 있는 방언(Dialect) 기능을 갖추고 있음

0개의 댓글