가장 에러를 많이 만났던 주차였다. 스스로의 힘으로 리팩토링에 성공해서 원하는 결과물을 만들어냈고, 금요일부터는 새로운 팀원들과 팀플 및 개인공부를 진행중이다. 다음 주차부터는 지금까지 배운 것들을 토대로 실제 서비스와 같은 것들을 만들어 나갈텐데, 지금 내 수준 정도로 괜찮은건가? 싶기는 하지만 앞으로 계속 배워나가면 된다라며 스스로를 다독이고 있는 것 같다.
1. ORM(Object Relational Mapping)
애플리케이션의 객체와 RDB(relational database)를 연결(mapping)하는 것이다
- 자바는 객체로 구성하여 프로그래밍하고, RDB는 테이블로 이루어져 있으며, 애초에 이 둘은 호환을 염두에 두고 만들어진 것이 아니기 때문에 객체와 테이블을 매핑하는 것에 문제가 생길 수 밖에 없다
- 이를 해결하고자 ORM 기술을 이용하여 SQL에 의존하지 않고 객체 중심적으로 프로그래밍할 수 있다
- 자바에서는 JPA가 ORM의 표준으로 사용된다
- JPA를 사용하게 되면 직접 SQL를 쓸 필요없이 JPA 내부적으로 적절한 SQL을 작성하고 JDBC API를 호출하여 원하는 결과를 반환받을 수 있다
장점:
- 객체 지향적인 코드로 비즈니스 로직에 더욱 집중할 수 있게 된다
- 재사용 및 유지보수에 좋다
- DBMS에 종속적이지 않다
단점:
- ORM으로만 완벽하게 서비스를 구현하기 어렵다
- 프로시저가 많은 시스템에는 ORM의 객체지향적 장점을 발휘하기 어렵다
- 프로시저: 쉽게 말해 하나의 함수처럼 실행하기 위한 쿼리들의 집합
- https://fomaios.tistory.com/entry/PLSQL-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80Procedure%EB%9E%80-feat-CRUD
https://sanseongko.github.io/java-orm
2. SQL(Structured Query Language)
- 관계형 데이터베이스 시스템(RDBMS)에서 자료의 관리 및 처리를 위해 설계된 언어
- 문법의 종류
- DDL(Data Definition Language): 각 릴레이션 정의 (ex: CREATE, ALTER, DROP...)
- DML(Data Manipulation Language): 데이터 관리 (ex: SELECT, INSERT, UPDATE...)
- DCL(Data Control Language): 데이터 접근 (ex: GRANT, REVOKE...)
- https://edu.goorm.io/learn/lecture/15413/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-sql/lesson/767683/sql%EC%9D%B4%EB%9E%80
3. MVC
1. DispatcherServlet ↔ Handlermapping: 요청을 받은 프론트 컨트롤러가 Handlermapping를 통해 어떤 컨트롤러의 어떤 함수를 써야하는지 알게된다 (Handlermapping에 api path와 컨트롤러 함수가 매핑되어있음)
2. DispatcherServlet ↔ Controller: 해당하는 컨트롤러에 클라이언트의 요청(+Model)을 넘겨주어 컨트롤러는 그 요청을 처리하여 Model과 View 데이터를 넘겨준다
3. DispatcherServlet ↔ ViewResolver: 전달받은 Model과 View를 ViewResolver가 받아 합쳐준 뒤 다시 넘겨준다
4. DispatcherServlet ↔ View: Model이 적용된 View를 넘겨주면 View가 이를 클라이언트에 넘겨준다
- Spring에서의 사용
1. Request
2. Response
'이노베이션 캠프' 카테고리의 다른 글
[TIL] 31일차 (0) | 2022.09.01 |
---|---|
[TIL] 29일차 (0) | 2022.08.30 |
[TIL] 27일차 (0) | 2022.08.28 |
[TIL] 26일차 (0) | 2022.08.27 |
[TIL] 25일차 (0) | 2022.08.26 |