📌 JDBC / SQL Mapper / ORM (JPA, Hibernate, MyBatis) 정리
📌 1. 개요
JDBC, SQL Mapper, ORM은 모두 Java 애플리케이션과 데이터베이스 간의 상호작용을 위한 기술이다.
차이는 “SQL을 얼마나 직접 작성하느냐”, “객체-테이블 매핑 수준이 어느 정도인가”에 따라 구분된다.
| 구분 | 추상화 수준 | SQL 작성 | 매핑 자동화 | 대표 기술 |
| JDBC | 낮음 | ✅ 직접 작성 | ❌ 없음 | JDBC API |
| SQL Mapper | 중간 | ✅ 직접 작성 | ✅ 결과 매핑 지원 | MyBatis |
| ORM | 높음 | ❌ 자동 생성 (필요 시 직접 가능) | ✅ 완전 자동 매핑 | JPA, Hibernate |
📌 2. JDBC (Java Database Connectivity)
🔍 개념
Java에서 DB에 직접 SQL을 작성해 실행하는 표준 API이다.
Connection, PreparedStatement, ResultSet 등을 이용해 데이터베이스와 통신한다.
✔ 특징
- 가장 로우레벨의 접근 방식 (ORM/JPA, MyBatis 같은 기술들도 내부적으로 JDBC를 사용해서 DB에 접속한다!)
- SQL, 커넥션, 자원 해제를 모두 개발자가 직접 제어해야 함
- 제어력과 유연성이 높지만, 코드 반복이 많고 유지보수가 어려움
📖 예시
Connection conn = DriverManager.getConnection(url, user, password); // DB 연결
PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE id = ?"); // 쿼리 작성
ps.setInt(1, 1); // 첫 번째 '?'에 1이라는 값을 설정
ResultSet rs = ps.executeQuery(); // 쿼리 실행 및 결과 저장
while (rs.next()) { //결과 출력
System.out.println("User: " + rs.getString("name"));
}
📌 3. SQL Mapper (예: MyBatis)
🔍 개념
SQL을 직접 작성하면서도, 그 결과를 Java 객체로 자동 매핑해주는 SQL 매퍼 프레임워크이다.
즉, JDBC보다 편리하지만 완전한 ORM은 아님.
✔ 특징
- SQL은 직접 작성, 하지만 결과를 자동으로 객체에 매핑
- XML 또는 Annotation 기반으로 SQL 정의
- JDBC보다 간결, ORM보다 제어력 높음
📖 예시 (MyBatis)
<!-- UserMapper.xml -->
<select id="getUser" resultType="User">
SELECT id, name FROM users WHERE id = #{id}
</select>
User user = userMapper.getUser(1);
System.out.println(user.getName());
📌 4. ORM (Object-Relational Mapping)
🔍 개념
객체(Object) 와 관계형 데이터베이스(Relational DB) 간의 매핑을 자동으로 처리하는 기술이다.
SQL을 직접 작성하지 않아도, 객체 조작만으로 DB 조작이 가능하다.
✔ 특징
- 객체와 테이블을 자동 매핑 (@Entity, @Id, @Column 등)
- SQL 자동 생성 (INSERT, SELECT, UPDATE, DELETE)
- 캐시(1차, 2차) 및 트랜잭션 관리 자동
- 대표 구현체: Hibernate, EclipseLink, 표준 인터페이스: JPA
✅4-1. JPA (Java Persistence API)
🔍 개념
ORM을 구현하기 위한 **Java 표준 인터페이스(명세)**이다.
직접 동작하지 않으며, Hibernate나 EclipseLink 같은 구현체를 통해 실행된다.
✔ 특징
- “이런 방식으로 ORM을 구현해야 한다”는 표준 규칙 정의
- 구현체 교체 용이 → JPA 코드는 Hibernate로, 또는 EclipseLink로 쉽게 대체 가능
📖 예시
@Entity
public class User {
@Id
private Long id;
private String name;
}
EntityManager em = emf.createEntityManager();
User user = em.find(User.class, 1L);
System.out.println(user.getName());
✅4-2. Hibernate
🔍 개념
JPA의 대표 구현체이자 가장 널리 쓰이는 ORM 프레임워크
(즉, Hibernate는 “ORM 프레임워크”이자 “JPA 구현체”)
✔ 특징
- SQL 자동 생성
- 캐싱(1차, 2차 캐시)으로 성능 향상
- 다양한 DB 지원 (Oracle, MySQL, PostgreSQL 등)
- JPA 기반 API 완전 지원
🚀 5. 결론
| 상황 | 추천 기술 | 이유 |
| SQL 제어와 성능이 중요 | JDBC | 세밀한 제어 가능 |
| SQL을 직접 쓰되 객체 매핑 편의도 원함 | MyBatis | SQL + 객체 매핑 절충형 |
| SQL 없이 객체 중심 개발 원함 | JPA/Hibernate | ORM 기반, 생산성 높음 |
⭐ 정리 한 줄 요약
JDBC는 “직접 SQL을 다루는 기본 API”,
MyBatis는 “SQL 중심 + 객체 매핑 지원 프레임워크”,
JPA/Hibernate는 “SQL을 숨기고 객체 중심으로 자동 매핑하는 ORM 기술”이다. 🚀
'DB > 데이터 관리' 카테고리의 다른 글
| Elasticsearch > analyzer (0) | 2026.01.25 |
|---|---|
| 개인 식별 정보 암호화 방법 (0) | 2026.01.25 |
| CTE(Common Table Expression)란? (0) | 2025.11.29 |
| Elasticsearch란? (0) | 2025.04.10 |