이번주는 정말 정신 없는 한주였다.
물론 강의보랴, 과제하랴 바빴지만 무엇보다도 이사(중국 -> 한국)를 해야하기 때문에... 너무 정신이 없어서 이번주는 공부를 많이 못 한 느낌이다ㅠ.ㅠ
TIL도 제대로 못 썼던 것 같아 반성해야하는 한 주였던 것 같다. 돌아오는 주부터는(드디어 한국에서!) 시간 관리를 더 철저하게 해서 부족한 부분을 얼른얼른 채워야겠다.
반복해서 적는 개념이라 예전에 썼던 내용들과 조금 겹치지만, 그래도 복습 느낌으로 다시 한번 정리해보겠다.
-
ORM이란?
💡 ORM: Object-Relational Mapping
Object: "객체"지향 언어 (자바, 파이썬)
Relational: "관계형" 데이터베이스 (H2, MySQL)
- 백엔드 개발자(Backend Developer): 웹 서버를 개발하는 개발자
- DBA (Database Administration): 데이터베이스 관리자. 데이터베이스를 설치, 구성, 관리 등의 일을 맡은 사람
-
JPA는?
💡 JPA: Java Persistence API
자바 ORM 기술에 대한 표준 명세
-
하이버네이트 (Hibernate)?
- JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 중 사실상 표준
- 스프링 부트에서 기본적으로 "하이버네이트" 사용 중
사실상 표준 (de facto, 디팩토)
보통 기업간 치열한 경쟁을 통해 시장에서 결정되는 비 공식적 표준이다
-
영속성 컨텍스트?
- JPA
- 객체 - ORM - DB
- 객체 - 영속성 컨텍스트 매니져 (entity context manager) - DB
-
스프링 MVC?
- MVC (Model - View - Controller) 디자인 패턴
- Server 에서 HTML 을 내려 주는 경우
정적 (static) 웹 페이지
- Controller
-
Client 의 요청을 Model 로 받아 처리
- 예) 회원가입을 위한 개인 정보들 (id, password, name)
-
Client 에게 View (정적 웹 페이지, HTML) 를 내려줌
동적 (dynamic) 웹 페이지
- Controller
- Client 의 요청을 Model 로 받아 처리
- Template engine 에게 View, Model 전달
- View: 동적 HTML 파일
- Model: View 에 적용할 정보들
- Template engine
- View 에 Model 을 적용 → 동적 웹페이지 생성
- 예) 로그인 성공 시, "로그인된 사용자의 id" 를 페이지에 추가
- Template engine 종류: 타임리프 (Thymeleaf), Groovy, FreeMarker, Jade 등 (스프링에서 JSP 이용은 추천하지 않고 있음)
- Client 에게 View (동적 웹 페이지, HTML) 를 내려줌
- 스프링 MVC 동작원리
👉 @Controller 는 스프링 서버 개발자 입장에서는 시작점과 끝점으로 보이지만, 사실 스프링이 뒤에서 많은 부분을 보이지 않게 처리해 주고 있습니다.