JDBC와 JPA는 둘 다 자바에서 데이터베이스와 상호작용하는 데 사용되는 기술이지만, 그들의 목적과 수준은 다릅니다. 각각의 관계를 설명하기 위해, 두 기술의 역할과 차이점, 그리고 JPA가 JDBC를 어떻게 사용하는지 살펴보겠습니다.
1. JDBC (Java Database Connectivity)
- JDBC는 자바에서 데이터베이스와 직접 통신하기 위한 저수준 API입니다.
- SQL 쿼리를 자바 코드에서 실행하고, ResultSet을 통해 결과를 받아오며, Connection, Statement 등의 객체를 통해 데이터베이스와 상호작용합니다.
- 자바 애플리케이션에서 데이터베이스에 직접적인 질의(SQL)를 수행하는 가장 기본적인 방법입니다.
- JDBC의 주요 구성 요소:
Connection
: 데이터베이스와의 연결을 담당.Statement
및PreparedStatement
: SQL 쿼리를 실행.ResultSet
: 쿼리 결과를 처리.SQLException
: 예외 처리.
2. JPA (Java Persistence API)
- JPA는 자바에서 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 매핑을 자동화하기 위한 고수준 API입니다.
- JPA는 개발자가 직접 SQL 쿼리를 작성하지 않고, 자바 객체를 통해 데이터베이스 작업을 할 수 있게 해줍니다. 즉, 객체와 테이블 간의 매핑을 통해 데이터베이스 작업을 보다 추상화된 방식으로 수행합니다.
- JPA는 ORM(객체-관계 매핑)을 제공하며, 데이터베이스의 레코드를 자바 객체로 변환하고, 자바 객체를 데이터베이스 레코드로 저장할 수 있게 해줍니다.
- JPA의 주요 구성 요소:
Entity
: 데이터베이스 테이블에 매핑되는 자바 클래스.EntityManager
: JPA의 핵심 인터페이스로, 엔티티의 라이프사이클을 관리.Query
: JPQL(JPA Query Language)을 사용해 데이터 조회.
3. JPA와 JDBC의 관계
- JPA는 JDBC 위에서 동작합니다. JPA는 저수준의 JDBC API를 사용하여 데이터베이스와 상호작용합니다.
- JPA를 사용하면 개발자가 직접 JDBC를 다룰 필요가 없으며, 데이터베이스와 상호작용할 때 JPA가 내부적으로 JDBC를 통해 SQL 쿼리를 실행합니다.
- JPA는 JDBC를 추상화하여 객체 중심의 프로그래밍을 가능하게 하고, 반복적인 JDBC 코드를 줄이면서 더 높은 수준의 프로그래밍을 제공합니다.
- JDBC는 JPA의 하부 기술로 동작하며, JPA의
EntityManager
와 같은 구성 요소는 JDBC를 사용하여 데이터베이스와 실제로 통신합니다.
4. 비교
- 레벨:
- JDBC는 저수준 API로, 데이터베이스와의 직접 통신을 담당합니다.
- JPA는 고수준 API로, 객체와 관계형 데이터베이스 간의 매핑을 담당합니다.
- 개발 생산성:
- JDBC는 수동으로 SQL 쿼리를 작성하고 직접 데이터베이스 작업을 처리해야 합니다.
- JPA는 객체 지향 방식으로 데이터베이스 작업을 처리하므로, 더 간단하고 유지보수가 용이한 코드를 작성할 수 있습니다.
- 쿼리 작성:
- JDBC는 직접 SQL을 작성하고 실행합니다.
- JPA는 객체 중심의 JPQL(Java Persistence Query Language)을 사용하거나 필요한 경우 SQL을 사용할 수 있습니다.
- 트랜잭션 관리:
- JDBC는 수동으로 트랜잭션을 관리해야 합니다.
- JPA는 자동으로 트랜잭션을 관리할 수 있으며, 스프링 같은 프레임워크와 통합하여 더 쉽게 트랜잭션을 제어할 수 있습니다.
5. JPA와 JDBC의 예시
JDBC 예시:
Connection connection = DriverManager.getConnection(url, username, password); PreparedStatement stmt = connection.prepareStatement("SELECT * FROM users WHERE id = ?"); stmt.setInt(1, userId); ResultSet rs = stmt.executeQuery(); while (rs.next()) { String name = rs.getString("name"); System.out.println(name); }
JPA 예시:
@Entity public class User { @Id private Long id; private String name; // Getters and Setters } EntityManager em = entityManagerFactory.createEntityManager(); User user = em.find(User.class, userId); System.out.println(user.getName());
6. 정리
- JDBC는 데이터베이스와 직접 상호작용하기 위한 저수준의 API이며, JPA는 JDBC 위에서 동작하는 고수준의 ORM API입니다.
- JPA는 개발자가 직접 SQL을 작성하지 않고도 자바 객체를 사용해 데이터베이스와 상호작용할 수 있도록 JDBC를 추상화합니다.
- JPA를 사용하면 데이터베이스와의 상호작용이 훨씬 간결해지고, 객체 지향적으로 데이터를 처리할 수 있습니다.
'JPA' 카테고리의 다른 글
이너 조인(Inner Join)과 레프트 조인(Left Join) (0) | 2024.09.20 |
---|---|
JPA 자동생성전략 3가지방법 ( IDENTITY, SEQUENCE, TABLE ) (2) | 2024.09.11 |
JPA가 제공하는 주요 CRUD 기능 (0) | 2024.09.10 |
데이터베이스 영속화 (0) | 2024.09.10 |
JPA(Java Persistence API) (1) | 2024.08.08 |