728x90
Java에서 데이터의 영속성(Persistence)를 위해 JDBC가 존재함. JDBC를 이용하여 실제 데이터베이스와 연결하고 상호작용함.
JDBC가 제공하는 드라이버를 이용하여 개발자는 실제 DBMS를 고려하여 개발하지 않아도 됨 (ex. Oracle, Mysql 등 모두 각자의 방식대로 관리하지 않아도 됨).
하지만 JDBC만 이용하면서 데이터베이스와 상호작용하는 것은 다소 불편함(추상화레벨이 낮아서 개발자가 관여해서 설정해주어야 하는 것이 많음 - 즉 손댈게 많음).
→ 그래서 이를 편리하게 하려고 Framework들 등장. 이러한 Framework의 종류에는 두가지가 있는데 하나는 SQL Mapper이고, 다른 하나는 ORM(Object Relational Mapping).
- SQL Mapper는 개발자가 SQL을 직접 작성해서 사용해야하므로 사용하는 DBMS에 종속적임. 데이터베이스(의 테이블)과 객체를 매핑하는 방식이 아니라 SQL 쿼리 결과를 Java에서의 Object와 Mapping하는 식으로 작동함.
- 대표적인 SQL Mapper로는 Mybatis, JdbcTemplete등이 있음
- ORM(Object Relational Mapping)은 SQL을 작성할 필요없이 제공되는 메서드로 동작하는 방식. DBMS에 독립적임. 자바의 객체와 Table(데이터)을 매핑하는 방식으로 작동함.
- JPA의 대표적인 구현체로 Hibernate가 있으며 가장 많이 사용됨. 이 역시 내부적으로는 JBDC(에서 제공하는 메서드)를 사용함. (당연함. 원래 JDBC가 하던거 편하게 하려고 만들어진 framework)Spring Data JPA는 스프링에서 제공하는 JPA 모듈이다. (JPA의 구현체를 한 번 더 추상화 한듯) 내부적으로는 JPA 구현체를 사용하며 어떤 JPA 구현체(ORM framework)를 사용할 것인지는 선택할 수 있다. Hibernate사용하는 경우가 많은듯.
- Hibernate는 HQL(Hibernate Query Language)를 사용하며 SQL이 제공하지 않던 페이징이나 동적 프로파일링을 제공함.
- JPA는 자바에서 제공하며, ORM에 대한 API 표준 명세임. 인터페이스이며 구현체가 아님. (ejb의 entity bean을 대체함)
728x90
'Spring' 카테고리의 다른 글
[JPA] 1:1 식별관계 외래키를 기본키로 사용하는 경우 (0) | 2021.09.11 |
---|---|
[Spring Boot] ResponseEntity사용하기 (0) | 2021.09.06 |