Spring/카테캠 - TIL

TIL[0712] : 3주차 강의 (DTO, 스트림, HTTP, JDBC, JPA)

mint* 2023. 7. 10. 17:56
728x90

DTO

DTO 정리본 ⬇️

https://shout-to-my-mae.tistory.com/313

 

DTO 생성 방법

DTO(Data Transfer Object) - 데이터 전송 객체 비지니스 계층과 프레젠테이션 계층간 데이터 교환을 하기 위해 사용하는 객체이다. 비지니스 계층 : 데이터베이스나 외부 시스템과 상호 작용하여 데이

shout-to-my-mae.tistory.com

 

스트림

초기 데이터 : [농어, 농어, 광어, 광어, 연어]

1. stream : 타입 제거 - 농어, 농어, 광어, 광어, 연어

2. filtering & 가공 :  원하는 것만 걸러내고 처리  

  • filter : 걸러내기 - 농어, 농어
  • map : 가공하기 - 농어회뜨기, 농어 회뜨기, 광어 회뜨기, 광어 회뜨기, 연어 회뜨기 

3. 수집 :  자바에서 사용할 수 있는 object로 변환 ex)ArrayList - [농어, 농어]

 

 

HTTP

브라우저가 논문 서버에 요청을 보낸다.

논문 서버 : 

    1. 파싱 : 요청된 데이터 찾기

    2.응답 후 connection close

브라우저는 렌더링을 한다.

✅ stateless : 서버 부하가 적다.

 

HTTP 메서드 클라이언트 측 요청

  • 자원 필요 요청
    • HTML
      • 하이퍼링크 (a 태그)
      • FORM 전송 (get 방식)
      • 웹 브라우저 주소창
    • JavaScript
      • fetch()
    • 각종 언어 지원 방식
      • http 프로토콜을 지원하는 모든 소켓 라이브러리
  • 자원 저장 요청
    • HTML
      • form 전송 (post 방식)
    • JavaScript
      • fetch()
    • 각종 언어 지원 방식
      • http 프로토콜을 지원하는 모든 소켓 라이브러리
  • 자원 수정 요청
    • HTML
      • 지원 X
    • JavaScript
      • fetch()
    • 각종 언어 지원 방식
      • http 프로토콜을 지원하는 모든 소켓 라이브러리
  • 자원 삭제 요청
    • HTML
      • 지원 X
    • JavaScript
      • fetch()
    • 각종 언어 지원 방식
      • http 프로토콜을 지원하는 모든 소켓 라이브러리

소켓 라이브러리

  • Python : requests, httplib2, urllib ..
  • JavaScript : axios, node-fetch ..
  • Java : HttpURLConnection, OkHttp ..
  • C++ : libcurl, cpp-httplib ..

 

POST, PUT, DELETE의 위험성

CSRF(Cross-Site Request Forgery)

공격자가 인증된 사용자의 권한을 이용해서, 악의적인 요청을 전송하는 공격

ex) 인증된 사이트에서 악성 사이트 링크에 접속하면, 인증된 정보를 가지고 DB 등을 변경할 수 있다. => 해결방법: CORS 정책 설정

CORS(Cross-Origin Resource Sharing)

웹 브라우저에서 실행되는 스크립트가 다른 도메인의 리소스에 접근할 때 적용되는 보안 정책

Same-Origin Policy : 일반적으로 웹 브라우저는 보안상의 이유로 자바스크립트에서 다른 도메인의 리소스에 접근하는 것을 허용하지 않음

XSS(Cross-Site Scripting)

공격자가 악성 스크립트를 삽입하여 사용자의 개인정보 탈취, 세션 하이재킹

Ex) 게시판에 악성 스크립트가 삽입되었을 경우, 방문시 공격을 받는다. => 해결방법 : 입력된 내용에 대해 인코딩( "<" -> "&lt")

 

REST API 설계

정리글 업데이트 ⬇️

https://shout-to-my-mae.tistory.com/288

 

REST API 설계

API (Application Programming Interface)란? 컴퓨터나 컴퓨터 프로그램 사이의 연결 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스 제공 목적 : 시스템이 동작하는 방식에 관한 내부

shout-to-my-mae.tistory.com

 

 

 

파싱(Parsing)

데이터를 분석하고 구문을 해석하여 프로그램이나 시스템이 데이터를 이해하고 활용할 수 있는 형태로 변환하는 과정

 

✳️ 모든 통신은 파싱이 필요하다.

1. 통신 프로토콜 정의
2. 프로토콜에 따라 데이터 형식 변환 (파싱)

 

JDBC , MyBatis, JPA

정리한 글 ⬇️

https://shout-to-my-mae.tistory.com/314

 

JDBC, MyBatis, JPA

JDBC(Java Database Connectivity) Java 애플리케이션과 데이터베이스간의 연결과 데이터베이스 작업을 수행하는데 사용된다. JAVA 표준 API이다. JDBC 드라이버 Java에서 날린 SQL 쿼리에 프로토콜을 적용시킨

shout-to-my-mae.tistory.com

 

지연로딩과 즉시 로딩, Join Fetch

정리한 글 ⬇️

https://shout-to-my-mae.tistory.com/315

 

즉시 로딩과 지연 로딩 (FetchType.EAGER/LAZY), 프록시, Fetch Join, Join

FetchType 연관된 객체를 언제 가져올 것인지를 정한다. 즉시(Eager)와 지연(Lazy)가 있다. FetchType.EAGER : @XXToOne에서 FetchType의 기본 값이다. FetchType.LAZY : @XXToMany에서 FetchType의 기본 값이다. 즉시 로딩 Fe

shout-to-my-mae.tistory.com

 

BDD

Given (주어진 상황)

  • 테스트를 수행하기 위해 필요한 초기상태 설정
  • 테스트에 필요한 객체, 데이터 또는 환경 준비

When(동작)

  • 실제로 테스트하려는 동작 발생
  • 특정 메서드를 호출하거나 어떤 이벤트가 발생하는 등의 동작 실행

Then(결과)

  • 기대하는 결과를 명시
  • 예상되는 동작의 출력, 상태 변화 또는 예외 발생등을 확인

✅ 테스트의 상황-동작-결과를 명확하게 표현할 수 있다.

✅ 테스트의 가독성과 이해도를 높인다.

 

 

 

728x90