자바 스프링에서 DB 연결 및 사용하는 방법에는 여러가지가 있다. 여러 가지 방법이 어떻게 나왔고, 발전하였는지 보면서 이해하면 쉬울 것이다.
Persistence
Persistence Layer
- 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층을 말한다.
- 어떻게 데이터베이스에 저장할 것인가를 구현하는 계층
Persistence Framework
- Persistence Layer를 구현하는 방법 중 하나
- 데이터베이스와의 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해주는 프레임워크
- SQLMapper : MyBatis, Spring JDBC
- ORM : JPA, Hibernate, Spring Data JPA
- database와 application program사이를 연결하는 다소 반복적인 작업들을 자동으로 수행해주는 middleware 역할
SQLMapper
- SQL을 직접 작성
- SQL문과 객체의 필드를 매핑하여 데이터를 객체화
- JDBC에서 반복적으로 해야하는 많은 작업들을 대신 해줌
- Spring JDBC, MyBatis
ORM
- 패러다임 불일치 해결
-
연관 관계
- RDB 테이블은 객체의 상속이라는 개념이 없음
- 객체 → 참조를 통해 다른 객체와 연관 vs 테이블 → 외래키를 사용해 다른 테이블과 연관
-
객체 그래프 탐색

- 객체가 연관관계를 가지고 있을 때 해당 연관 객체를 가져온다고 보장이 가능한가? → 반환한 엔티티를 신뢰하고 사용할 수 없음.
-
객체 간 비교
- DB는 기본 키의 값으로 각 row 구분
- 객체는 동일성 / 동등성 비교로 구분
- 객체와 관계형 DB를 맵핑 → 객체의 참조로 연관 관계 저장 가능