티스토리 뷰
Spring MVC - Controller + Service
[Spring]Spring MVC - Controller 클래스 구조 생성 및 설계
[Spring]Spring MVC - Controller 클래스에 핸들러 메서드(Handler Method) 구현
[Spring]Spring MVC - Controller 클래스에 ResponseEntity 적용
[Spring]Spring MVC - Controller 클래스에 DTO 적용
[Spring]Spring MVC - DTO 유효성 검증(Validation)
[Spring]Spring MVC - DI를 통한 API 계층 ↔ 서비스 계층 연동
[Spring]Spring MVC - 매퍼(Mapper)를 이용한 DTO 클래스 ↔ 엔티티(Entity) 클래스 매핑
[Spring]Spring MVC - @ExceptionHandler를 이용한 예외처리
[Spring]Spring MVC - @RestControllerAdvice를 이용한 예외처리
Spring Data JDBC
[Spring]JDBC(Java DataBase Connectivity)
[Spring]Spring Data JDBC, Spring Data JDBC 사용법
[Spring]Spring Data JDBC - 도메인 엔티티&테이블 설계
Spring Data JPA
[Spring]JPA(Java Persistence API)
[Spring]JPA - Entity ↔ DB Table Mapping
[Spring]JPA - Entity ↔ Entity Mapping
[Spring]Spring Data JPA - 데이터 액세스 계층 구현
지난 글에선 웹 앱의 계층 구조와 JDBC Workflow에 대해 알아봤다.
출처:https://herbertograca.com/2017/08/03/layered-architecture/
2022.08.26 - [개발/Spring] - [Spring]JDBC(Java DataBase Connectivity)
하지만 이 JDBC에는 단점이 있었는데, 데이터베이스 연결과 SQL CRUD 사용, 결과값의 Data Type 매핑 등
모든 과정을 개발자가 직접, 반복해서 입력해주어야 한다는 점이었다.
따라서 개발의 생산성을 심각하게 떨어뜨리게 되었는데, 이를 해결하며 나온 것이 바로 SQL Mapper와 ORM이다.
SQL Mapper vs. ORM(Object Relational Mapping)
SQL Mapper와 ORM은 둘 다 영속성 프레임워크에 속한 기술이다.
번거로운 JDBC 작업을 대신 해준다는 공통점과 함께 여러 가지 차이점이 있는데,
지금부터 하나씩 알아보자.
참고로, SQL Mapper와 ORM을 구조면이 아닌 시간 순서로 본다면 아래와 같은 그림이 된다.
SQL Mapper
- Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술
- SQL문 직접 작성 및 쿼리 수행결과를 어떠한 객체에 매핑하여 줄지 바인딩 → SQL 의존적
- 다른 DB를 도입하거나 변환하는 경우 SQL문을 그 DB에 맞게 새로 작성 → DB 의존적
- 패러다임 불일치* 발생
- Mybatis, JDBC Template 등이 있음
*패러다임 불일치
객체 지향 언어 (OOL) - 데이터를 클래스로 캡슐화해 객체로써 사용. 추상화, 상속, 다형성 등의 장치 존재
관계형 데이터베이스 (RDB, Relational Database) - 데이터 항목 간에 사전 정의를 통해 속성별로 데이터를 나누어 저장
DB에는 추상화, 상속 등의 장치가 존재하지 않고, 오히려 데이터를 쪼개서 저장해야 한다.
그러다 보니 자연스럽게 객체가 아닌 테이블에 더 집중하게 되고,
객체는 단순히 테이블에 매핑시키기 좋게, 데이터를 전달하기에 적합하게 설계하게 된다.
이는 개발 과정에서 SQL 설계에 시간을 많이 잡아먹는, SQL 의존적인 형태가 될 수밖에 없다.
ORM(Object Relational Mapping)
- Object와 DB Table을 매핑하여 데이터를 객체화하는 기술
- 객체 사이의 관계를 바탕으로 SQL 자동 생성 → SQL 쿼리가 아닌 메서드로 데이터 조작
- 객체 지향 프로그래밍 언어와 DB 간 데이터를 변환 - "가상" 객체 데이터베이스 구축
- 객체와 DB 설계의 분리
- 복잡한 쿼리의 처리가 힘들고, OOP와 RDB 양쪽을 알아야 해서 배우기가 어려움
- Hibernate, Spring Data JPA 등이 있음
'Java+Spring > Spring' 카테고리의 다른 글
[Spring]Spring Data JDBC - 도메인 엔티티 클래스 정의 (0) | 2022.08.30 |
---|---|
[Spring]Spring Data JDBC - 도메인 엔티티&테이블 설계 (0) | 2022.08.29 |
[Spring]Spring Data JDBC, Spring Data JDBC 사용법 (0) | 2022.08.26 |
[Spring]JDBC(Java DataBase Connectivity) (0) | 2022.08.26 |
[Spring]Spring MVC - Custom Exception을 이용한 클라이언트 출력 (2) | 2022.08.26 |
[Spring]Spring MVC - 비즈니스로직 예외 던지기(throw) 및 처리 (0) | 2022.08.25 |
- Total
- Today
- Yesterday
- 맛집
- 기술면접
- 자바
- 야경
- 지지
- a6000
- 스트림
- spring
- java
- 칼이사
- 백준
- 세계일주
- 알고리즘
- 중남미
- 동적계획법
- 유럽
- 여행
- 남미
- 세계여행
- RX100M5
- 유럽여행
- Backjoon
- Algorithm
- 세모
- 리스트
- BOJ
- Python
- 파이썬
- 면접 준비
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |