[스프링부트 개념정리 with JPA] 6, 7, 8, 9 ,10, 11강

오젼·2023년 12월 16일
0

6강

스프링부트 개념정리 with JPA 6강 - 영속성 컨텍스트란 무엇인가요?

영속성 컨텍스트

컨텍스트: 쉽게 말하면 어떤 대상의 모든 것을 가지고 있는 것

자바프로그램과 데이터베이스 사이에서 왔다갔다한 모든 정보들을 영속성 컨텍스트가 알고 있다.

자바프로그램과 데이터베이스 사이에서 일이 생길 때 꼭 거쳐가는 곳이라고 생각하면 될듯

예를 들어 자바에서 Select 과일데이터 하면 영속성 컨텍스트는 DB에서 과일데이터를 가져와 java object형태의 데이터로 자바에 전달해줌.

이 때 자바가 가지고 있는 과일데이터, 영속성 컨텍스트의 과일데이터, DB의 과일데이터는 모두 같은 데이터.

그리고 자바에서 과일데이터를 바꾸면 영속성 컨텍스트의 과일데이터도 바뀜. 이 상태로 자바에서 데이터베이스로 커밋해서 변경된 데이터를 밀어넣으면 영속성 컨텍스트의 과일데이터 형상과 DB의 과일데이터 내용이 다르니까 Update문이 자동으로 호출됨.

흠 잘 이해 안 가는데 더 공부해야 할듯.

DB와 OOP의 불일치성

JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다(DB는 객체 저장 불가능)

DB에선 각각의 컬럼들이 기본 자료형만 가질 수 있다. 오브젝트를 가질 수 없다.

근데 자바 관점에서는 오브젝트를 컬럼으로 가질 수 있음.

JPA는 이를 해결해줌.

원래대로라면 join을 하거나 foreign key를 사용해줘야 함
근데 JPA가 자동으로 매핑해줌 -> ORM

7강

스프링부트 개념정리 with JPA 7강 - OOP 관점에서 모델링이란?

ORM

Object Relational Mapping
OOP 관점에서 모델링을 할 수 있게 해줌.
ORM이란 객체와 DB의 테이블이 매핑을 이루는 것을 말한다.

방언 처리가 용이

방언 처리가 용이하여 Migration하기좋음. 유지보수에도좋음.

JPA가 MySQL만 지원하면 DB도 MySQL밖에 못 쓰는데
여러 방언 지원해서 DB 다른 거 써도 좋음

8강

스프링부트 개념정리 with JPA 8강 - HTTP가 무엇인지 궁금해요!

HTTP는 기본적으로 html 확장자 문서를 요청하면 주기 위한 프로토콜.

그래서 지속적으로 연결될 필요가 없었음. stateless.

소켓통신 대략적 설명: 소켓통신은 지속적 연결.
예를 들어 5000포트를 연결을 위한 포트라고 하면, 5000포트에 연결되고 나면 해당 연결은 끊기고 새로운 포트를 스레드를 생성해 연결해줌.

스레드를 사용하는 이유는 자원이 온통 거기 쓰이면 연결을 위한 5000포트를 사용하지 못하기 때문에

9강

스프링부트 개념정리 with JPA 9강 - 톰켓이란?

톰캣

자원을 가지고 있는 사람: 서버
요청하는 사람: 클라이언트

서버는 리퀘스트를 받는다. 이 때 어떤 걸 리퀘스트 할지 명시해야 하니까 URL을 사용 == 자원 요청 주소

HTTP는 단순하게 요청하면 static 자원을 응답해주는 구조고,
소켓통신을 해야지 지속적 연결이 가능하다.

웹서버 아파치는 jps 파일 즉 자바코드는 이해하지 못함. 그래서 .jsp파일이 request로 들어오면 응답을 못 해줌. 그래서 톰캣을 달아줌.

톰캣을 달면 아파치가 자기가 이해하지 못하는 파일의 요청이 오면 톰캣한테 제어권을 넘겨버림.

톰캣은 .jsp 파일에 있는 모든 자바코드를 컴파일 하고, 컴파일이 끝나면 컴파일된 데이터를 .html 파일에 덮어씌움

즉 톰캣은 자바코드를 html파일로 바꿔주는 역할.

10강

스프링부트 개념정리 with JPA 10강 - 서블릿 객체의 생명주기를 알려줘요!

서블릿 컨테이너

톰캣이 서블릿 컨테이너

리퀘스트가 오면 스레드를 만들고 서블릿 객체를 만든다...? 사진은 설명이 잘못된 것이라 함. 서블릿 객체는 하나라고 한다. 이건 나중에 더 찾아보기

스레드 개수 제한 가능. 많이 생성하도록 할 수 있지만 그렇게 되면 서블릿 객체를 만드는데 드는 시간이 더 많이 듦. 최적의 개수를 조절할 수 있어야 함

만들어진 스레드는 재사용. 스레드를 20개로 제한해놨음 21번째 요청은 대기하고 있다가 이미 생성됐던 스레드로 감

URL vs URI

URL은 로케이션 URI는 아이덴티파이어. URL은 위치 URI는 식별자로 요청하는 것.

스프링에서는 URL 접근을 막아놨다.
그래서 URI 접근을 해야하는데 이러면 특별한 파일 요청을 할 수 없다.
그렇기 때문에 요청시에는 무조건 자바를 거쳐야 한다. 그래서 톰캣이 항상 실행됨
(html, css, png 같이 컴파일이 필요 없는 건 톰캣이 필요 없는데, URI로 접근하면 저렇게 특별한 파일을 요청하게끔 할 수 없기 때문에 톰캣이 다 받아서 해결함)

?? 흠 나중에 더 설명해주신다고 한다.

11강

스프링부트 개념정리 with JPA 11강 - web.xml은 무엇인가요?

문지기가 Web.xml

서블릿컨텍스트 초기 파라미터

초기 파라미터 == 암구호

Session의 유효시간

있을 수 있는 시간
더 있고 싶으면 문지기한테 session 초기화 요청.

Servlet/JSP에 대한 정의 및 매핑

서블릿 매핑: 니가 요청한 자원이 정확히 어디에 있는지 알려주는 것
Servlet/JSP에 대한 정의를 보고 매핑을 시켜주는 것
흠 더 찾아보니까 서블릿과 JSP가 다른 것이다.
오오 정리 잘 된 것: https://velog.io/@effirin/Servlet과-JSP에-대해

MIME Type 매핑

Mime Type: 들고 온 것의 타입
아무 것도 안 들고 왔다는 것 = 그냥 둘러보로 들어온 것. GET 방식

Welcome File list

요청하는 것도 없고 들고 온 것도 없을 때 어디로 보낼지

Error Pages 처리

그냥 말 그대로. 에러페이지 처리할 수 있어야 함

리스너/필터 설정

아예 들어오지 못하게 막거나 소지하지 못하는 것을 가져왔을 때 뺏고 들여보내 주는 게 필터의 역할

아 리스너 특정 이벤트 등록해두는 거

보안

걍 보안

0개의 댓글