JPA
: 자바 진영의 ORM 기술 표준으로 사용되는 인터페이스 모음
cf) ORM
ORM
: Object-Relational Mapping(객체 관계 매핑) 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계하고 ORM 프레임워크가 중간에서 매핑
- JPA는 애플리케이션과 JDBC 사이에서 동작
- JPA는 DB와 자바 객체를 매핑하기 위한 인터페이스를 제공하고 Hibernate, OpenJPA, EclipseLink 등이 인터페이스를 구현하고 있음
- 그 중 가장 많이 쓰이는 것이 Hibernate
- JPA를 사용하는 이유 )
- SQL 중심적인 개발에서 객체 중심으로 개발
- 페러다임의 불일치 해결 -> 상속 등
- 데이터 접근 추상화와 벤더 독립성
- 반복적인 CRUD SQL을 처리해줌
- 장점 )
- SQL이 아닌 메소드로 DB를 조작하여 객체 모델을 이용하여 비즈니스 로직을 구성하는 데만 집중 가능
- 객체지향적인 코드 작성 가능
- DB를 변경해야 하는 경우 새로 쿼리를 짜지 않아도 됨
- 단점 )
- 잘못 설계할 경우 속도 저하가 발생
- 복잡한 쿼리의 경우 별도의 튜닝이 필요하기 때문에 SQL을 써야할 수도 있음
- 동작 원리 )
- 애플리케시연과 JDBC 사이에서 동작
- Entity 객체 분석 및 SQL 생성
- 애플리케이션에서 JPA의 persist() 메서드 호출
- JPA : Entity 객체 분석 -> 적절한 SQL 생성
- 생성된 SQL -> JDBC API를 통해 DB에 전송되어 실행
- 객체 - 관계 매핑
Hibernate
: Java 언어를 위한 ORM 프레임워크
- JPA의 구현체로 JPA의 인터페이스를 구현하며, 내부적으로 JDBC API를 사용
- Hibernate를 사용하면 상속, 다형성, 연결, 구성 및 JAVA 컬렉션 프레임워크를 포함하여 자연스러운 객체 지향 관용구를 따르는 영구 클래스를 개발할 수 있음
- 개발자 생산성과 런타임 성능 측면에서 JDBC 코드보다 우수한 성능을 일관되게 제공함
cf)JDBC
JDBC
: Java 기반 애플리케이션의 데이터를 DB에 저장 및 업데이트하거나, DB에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API
- Java 애플리케이션에서 DB에 접근하기 위해 JDBC API를 사용하여 DB에 연동할 수 있음
- DB에서 자료를 쿼리하거나 업데이트하는 방법을 제공
- 3가지 기능을 표준 인터페이스로 정의하여 제공
- java.sql.Connection : 연결
- java.sql.Statement : SQL을 담은 내용
- java.sql.ResultSet : SQL 요청 응답
- 동작 흐름 )
- Java 애플리케이션 내에서 JDBC API를 사용하여 DB에 접근하는 단순한 구조
- JDBC API를 사용하기 위해서는 JDBC 드라이버를 먼저 로딩한 후 DB와 연결하게 됨
- JDBC 드라이버 )
- DB와의 통신을 담당하는 인터페이스
- Oracle, MySQL 등과 같은 DB에 알맞은 JDBC 드라이버를 구현하여 제공
- JDBC 드라이버의 구현체를 이용해서 특정 벤더의 DB에 접근할 수 있음
Reference
https://ittrue.tistory.com/250
[Java] JDBC란 무엇인가? - Java Database Connectivity
JDBC란? JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다. JDB
ittrue.tistory.com
https://chaeyami.tistory.com/256
[JPA] JPA와 하이버네이트(Hibernate)
JPA(Java Persistent API)JPA(Java Persistence API) : ORM 기술의 표준 인터페이스ORM은 객체와 관계형 데이터베이스를 매핑해 주는 기술이며, JPA는 이를 표준화한 것이다.그러니까, 자바 애플리케이션에서
chaeyami.tistory.com
'JPA' 카테고리의 다른 글
6. JPA의 캐시 (0) | 2025.06.17 |
---|---|
5. M : N 해결 전략 (0) | 2025.06.17 |
4. N + 1 문제 (0) | 2025.06.17 |
3. Eager, Lazy Loading (0) | 2025.06.06 |
2. 영속성 컨텍스트(캐시, 동일성 보장, 변경 감지, 트랜잭션 지연) (0) | 2025.06.06 |