티스토리 뷰

Spring

Java Persistence 계층의 구조 정리

SiO2whocode 2023. 7. 13. 21:49
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을 대체함)

그림 출처 : https://code-lab1.tistory.com/288

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함