전체 글 13

jpa 사용법

Primary key로 찾을 때는 findById(int값)그외에 칼럼은 findByName  , findByEmail , findByNameAndEmail 등등..@AutowiredMemberRepository memberRepository;SELECT 문 예시Member member = memberRepository.findById(int 값).orElse(null);= select * from member where member_seq = 값List member = memberRepository.findAll();= select * from member (만약 member안에 Play play 같은 객체가 존재하면 play도 조인해서 가져옴)ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡDELETE 문 예시memberRe..

카테고리 없음 2024.11.29

JPA 쿼리 분석

수행시간을 측정해보자. 1. EAGER 일 때 + findBy 메소드 그대로 활용   쿼리는 조인 없이    총 3개의 쿼리가 수행되고,수행 시간: 34ms 2. 1번의 케이스에서 fetchType이 LAZY로 바꾼다면 쿼리는 변하지 않는다.쿼리가 수행되는 시점만 바뀐다.수행 시간: 35ms3. UserEntity 참조 없이, CouponEntity만 바로 가져오게 변경  쿼리는 1번만 수행되고 usercoupon이랑 coupon이랑 조인된다. 수행 시간: 12ms  분석 결과 :  기존의 UserCouponEntity에서 findBy메소드로 자식 엔테디 CouponEntity, UserEntity를 자동으로 가져오는 LAZY EAGER 방식은 모두 JOIN 연산 없이 쿼리가 3번 일어나고, UserCo..

카테고리 없음 2024.11.24

웹 흐름 기본

클라이언트 서버 예를 들어, 클라이언트 아이피 주소를 111.111.111.111 포트 번호를 111번이고, 서버의 아이피 주소는 222.222.222.222 포트 번호를 80번이라고 가정하자. 이때, 클라이언트는 웹브라우저(크롬, 엣지)를 통해서 접속하기 때문에 클라이언트 포트 번호 111번에서 웹프라우저 프로그램이 실행되는 것이다. *포트 번호를 쓰는 이유 : 하나의 컴퓨터에서 실행 중인 N개의 프로그램을 구분하기 위해서 포트 번호마다 특정 프로그램이 실행됨 0. 클라이언트 웹브라우저에는 어떠한 html 혹은 자바 파일이 존재하지 않음. 모든 html css js Java 파일은 서버에 존재한다. 정적 컨텐츠 : html css(실행 결과가 항상 동일) 동적 컨텐츠 : js(실행 결과가 그때 그때 ..

카테고리 없음 2024.11.02

젠킨스 서버 , 프론트 서버 , 백엔드 서버 3개 서버 구조

서버사이드 랜더링 = 타임리프, JSP클라이언트 사이드 랜더링 = 리액트우선, 정적 컨텐츠란, HTML css js 파일처럼 항상 똑같은 내용을 불러오는 파일을 말한다.정적 = 동일한 요청이면 동일한 응답을 한다. (html 껍데기 내용은 항상 같음)이때 자바스크립트에서 백엔드 서버에 ajax, axios fetch 같은 요청을 하면 백엔드 서버에 게시글 데이터를 동적으로 받아온다. 서버에 존재하는 게시글 데이터는 변할 수 있으므로 동적 컨텐츠라 부른다.동적 = 동일한 요청이여도 다른 응답을 할 수 있다.  이러한 데이터를 동적 컨텐츠(DB에서 json 형태로 데이터만 받아오는 것)라고 한다. 이제부터는 HTML css js 같은 정적 컨텐츠를 받아오는 것과 서버에서 DB를 거쳐서 json 데이터를 받아..

카테고리 없음 2024.10.31

Day 77 - Homework, React 비동기 통신

데이터 읽기, 쓰기 웹 스토리지 HTML5에서 추가된 기술로 로컬스토리지와 세션스토리지로 구분된다. 특징 - 웹 스토리지는 Key와 Value 형태로 이루어졌다. - 웹 스토리지는 클라이언트에 대한 정보를 저장한다. - 웹 스토리지는 로컬에만 정보를 저장하고 쿠키는 서버와 로컬에 정보를 저장한다. (쿠키는 서버에 저장된다기보단, 클라이언트와 서버 간의 통신에 이용된다는 의미이다.) 종류 로컬스토리지 (localStorage) - 클라이언트에 대한 정보를 영구적으로 저장 세션스토리지 (sessionStorage) - 세션 종료 시(브라우저 닫을 경우) 클라이언트에 대한 정보 삭제 장점 - 서버에 불필요하게 데이터를 저장하지 않는다. (백엔드에 절대로 전송되지 않는다.) - 저장 가능한 데이터의 용량이 크다..

카테고리 없음 2024.10.25

TasteMasters API 문서

데이터만 처리하는 경우에는 /api/*로 시작하고JSP 페이지를 요청하는 경우에는 /page/*로 정합시다.위의 규칙을 만드는 사람이 마음대로 정하기 나름회원 가입 JSP 페이지(현식)URL : /page/member/joinMethod : GETDescription : 회원 가입 JSP 페이지를 로드합니다.Request Body :Response Code :Response Body : 회원 가입 JSP 콘텐츠로그인 JSP 페이지(재영)URL : /page/member/loginMethod : GETDescription : 로그인 JSP 페이지를 로드합니다. Request Body :Response Code :Response Body : 로그인 JSP 콘텐츠로그인 요청 (현식)URL : /api/memb..

카테고리 없음 2024.10.13

서버에 이미지 저장되는 방식

우선,가상 폴더(경로)와 실제 폴더(경로)가 무엇일까? 가상 폴더는 외부에 노출해도 되는 폴더 경로이다. 실제 파일이 저장되는 위치와 다르다. 프로젝트에서 API를 설계할 때, /page/index로 하는 것도 일종의 가상 경로이다.실제 index.html 파일의 경로가 아니다. 가상 폴더의 위치에는 파일이 저장되지 않고, 실제(realPath) 폴더 경로에 저장이 된다. 즉, 가상 폴더에는 이미지 파일이 존재하지 않으며, 실제 폴더 경로에 이미지가 존재한다. 왜 이런 방식을 쓸까? 이미지가 있는 폴더를 직접적으로 노출하면 위험하니 보안상의 이유이다.jsp , html 파일의 위치를 노출하지 않고, 서블릿을 통해 API 요청으로 불러오도록 하는 것과 동일한 이유 이미지를 요청하는 클라이언트는 실제 위치를..

카테고리 없음 2024.10.11

DAO 인터페이스와 Mybatis 매핑 과정

0. SpringConfig에서 DataSource , SqlSessionFactory , SqlSession 필요한 설정을 먼저 해준다. ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★수정 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 1. @MapperScan() 안에 패키지를 스캔하면서 @Mapper 어노테이션을 찾는다. 수정 후 -> @MapperScan 이랑 @Mapper는 하나의 흐름이 아니라 각각 독립된 다른 방법임 @MapperScan으로 패키지를 전체를 한번에 읽거나 or @Mapper가 붙은 거를 각각 전부 찾거나 or XML로 설정해주거나 3가지 방법이 존재한다. ① XML 기반 applicationContext.xml에 ② @Mapper 기반 @Mapper public in..

카테고리 없음 2024.10.10

스프링MVC - DispatcherServlet이 HTTP 요청을 처리하는 과정

DispatcherServlet는 비유적으로 설명하자면 학교 행정실(중앙 처리 방식)과 같다고 할 수 있다. 학생 →  학교 행정실(중심)에 문의를 하면, 학교 행정실(중심) → 교수님에게 문의를 하고,교수님 → 학교 행정실(중심) 에게 답변을 통보하고다시 학교 행정실(중심) → 학생들에게 결과를 통보한다. 즉, 가장 중심에 DispatcherServlet이 있고 DispatcherServlet이(View, ViewResolver, Controller, HandlerMapping)와 각각 상호 작용하는 방식으로 동작한다..! ViewResolver와 View 는직접적으로 상호 작용하는 것이 아니다.  반드시 DispatcherServlet를 거쳐 가야만 한다.어렵게 생각하지말고 DispatcherServ..

카테고리 없음 2024.10.08