티스토리 뷰
반응형
- DB를 사용해봤어도 ORM의 개념을 잘 모르는 것 같아 찾아보던 중 Persistence(영속성) 개념을 이해하게 되었다.
참고.
1. Persistence
- 데이터를 사용하는 App. 또는 로직이 종료되어도 데이터가 사라지지 않는 특성이다.
- 예를 들어, App. 동작 중 사용되는 값들은 데이터로서 메모리에 적재되고, GC 과정 또는 App. 종료에 의해 소멸된다.
- 이는 영속적이지 않은 데이터의 특징이며, 계속해서 데이터를 재활용할 필요가 있는 경우 이를 영구적으로 보존할
방법이 필요하다. - 이를 위해 임의의 시점에서 메모리 상에 존재하는 데이터를 파일 또는 DB를 활용하여 저장하는 방식을 취하게 된다.
2. Persistence Layer
- App.을 여러 계층으로 나누어보았을 때, 데이터를 Persistent하게 만들어주는 계층이 된다.
- 복잡한 Persistence Layer에서의 작업을 간단하게 개발할 수 있도록 돕는 프레임워크를 Persistence Framework라고 한다.
- Persistence Framework는 다시 SQL Mapper와 ORM으로 나누어볼 수 있다.
- SQL Mapper: Mybatis 등, SQL 문을 통해 직접 DB 데이터를 다루도록 돕는다.
- ORM: Hibernate와 같이 객체를 통해 간접적으로 DB 데이터를 다루도록 돕는다.
3. ORM
- App.의 객체와 RDB의 데이터를 매핑 해주는 행위 자체를 말한다.
- Java를 예로 들어, 데이터는 객체의 형태로 존재하지만 RDB에는 테이블의 형태로 존재해야 한다.
- 이에 따라 데이터의 형태는 불일치하게 되며, ORM은 이를 매핑해주는 역할을 수행한다.
참고. JDBC와 JPA, Hibernate
- JDBC는 Java에서 DB에 접근하는 방법을 제공하는 API이다.
- JPA 자체가 JDBC API를 사용하여 DB와 통신한다고 한다. 따라서 JPA 구현체는 JDBC를 내부적으로 사용하게 된다.
- JPA는 Java Persistence API의 약자로, Java App.에서 RDB를 사용하는 방식을 정의하는 '인터페이스'이다.
때문에 JPA는 구현체가 아닌 명세로 이해할 수 있다.- Spring Data JPA는 또 달라서, JPA를 더 쉽게 사용하기 위해 한 번 더 추상화한 모듈이라고 한다. 참고할 것!
- Hibernate는 JPA의 구현체이다. 때문에 JPA를 사용하기 위해 반드시 Hibernate를 사용할 필요는 없다.
'Dev.' 카테고리의 다른 글
[Diagram] ERD tool (짧) (0) | 2021.09.03 |
---|---|
[Git] 브랜치 신규 생성 및 전환, remote push (짧) (0) | 2021.08.17 |
[HTTP] 코드 401 403 차이 (짧) (2) | 2021.07.27 |
[REST] REST API 참고용 글 모음집 (0) | 2021.07.27 |
[Gradle] gradle wrapper basic (1) | 2021.07.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- terraform
- Database
- Linux
- dev
- AWS
- 코딩테스트
- AWS IoT
- Node.js
- kotlin
- Java
- mysql
- Gradle
- pgloader
- Spring Cloud Config
- Vault
- postgresql
- spring boot
- eureka
- hashicorp
- shell
- Docker
- IntelliJ
- JEST
- etc
- JPA
- Puppeteer
- Git
- javascript
- jQuery
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함