1. 이번주 배운 내용 정리
1) 인프런 강의 배운 내용
- 정적 컨텐츠
- MVC model
- API : @ResponseBody 사용 원리
- 테스트 케이스 작성 방법
- 스프링 빈과 의존 관계
- 스프링 프레임워크와 스프링 부트
- 객체지향 프로그래밍의 특징과 SOILD 원칙
- IoC, DI, Container
- 스프링 컨테이너와 스프링 빈
- 스프링 컨테이너의 종류
- 싱글톤 컨테이너란?
- 컴포넌트 스캔과 의존관계 자동 주입
2) 세션 및 항해 강의를 통해 배운 내용
- 다대일, 일대다, 다대다, 일대일 관계 매핑 방법과 MappedBy, cascade 옵션
- AccessToken과 RefreshToken
- @Builder 사용 방법과 장점
2. 이번 주차 주요 키워드(ORM, SQL, MVC)
- 데이터를 DB에 저장하는 방법은 여러가지가 있다.
- JDBC : JAVA에서 DB에 접근할 수 있도록 하는 자바 API이다
- Spring JDBC :
- Persistence FrameWork : SQL Mapper와 ORM으로 나뉜다.
- SQL Mapper : 객체와 SQL을 단순 필드 매핑한다. 개발자가 SQL 문을 작성해서 직접 DB 조작
- ORM : 아래와 같이 설명한다.
1) ORM
- 객체와 RDBMS의 데이터를 매핑한다.
- 객체를 통해 간접적으로 DB데이터를 다룬다.
- 객체와 DB 데이터를 자동으로 매핑해준다.
2) SQL
- 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
- SQL문법의 종류
- DDL(data Definition Language) : 각 릴레이션을 정의를 위한 언어 ex) CREATE, ALTER, DROP...
- DML(data Manipulation Language) : 데이터 관리를 위한 언어 ex) SECLECT, INSERT, UPDATE ...
- DCL(data Control Language) : 관리, 접근 권한을 다루는 언어 ex) GRANT, REVOKE ....
- SQL 언어의 특징
- 대소문자를 가리지 않는다.
- 반드시 세미콜론(;)으로 끝난다
- 고유값은 따옴표(' ' )를 사용
- 객체를 나타낼때는 백틱(``)을 사용
3) ORM
- 소프트웨어 디자인 패턴 중 하나로 Model, View, Controller로 나뉜다
- model : 어플리케이션의 정보나 데이터, DB등을 말한다.
- View : 사용자에게 보여지는 UI, 모델로 부터 정보를 얻고 표시
- Controller : 데이터와 비즈니스로직 사이의 상호 동작을 관리, 모델과 뷰를 통제하고, 뷰와 모델이 직접적인 상호 소통을 하지 않도록 관리한다.
- MVC1 패턴
- JSP가 View와 Controller를 모두 담당, 구현 난이도가 쉽다.
- 내용이 복잡하고 거대해질수록 사용이 어렵다. > 재사용성도 떨어지고, 읽기가 어려워져 유지보수 문제 발생
- MVC2 패턴 (Spring에서 사용)
- MVC1과 다르게 Controller와 View가 분리되어 MVC1의 단점을 보완 가능, 필요한 부분만 수정하면 된다.
- 구조가 복잡해 질 수 있지만, 개발자가 세부적인 구성까지 신경쓰지 않아도 되는 것이 장점
- 각종 프레임 워크들이 잘 발전되어 왔으며 대표적인 것으로 스프링 프레임워크가 있다.
3. 참조자료
1) ORM과 JPA : https://me-analyzingdata.tistory.com/entry/Spring-JPA-ORM%EA%B3%BC-JPA
2)MVC1, MVC2 : https://chanhuiseok.github.io/posts/spring-3/