- JPA란 무엇인가요?

 

1. JPA란?

    1) JPA는 Java Persistence API 이다.

    2) JPA는 ORM 기술이다.

    3) JPA는 반복적인 CRUD 작업을 생략하게 해준다.

    4) JPA는 영속성 컨텍스트를 가지고 있다.

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

    6) JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)

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

    8) JPA는 쉽지만 어렵다.

 

- Persistence(영속성)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

  영속성은 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현한다.

 

- API

  Application(A)

  Programing(P)

  Interface(I)

 

- 프로토콜 / 인터페이스

인터페이스 : 상하관계가 존재하는 약속

 

프로토콜 : 동등한 관계가 존재하는 약속

 

- Java Persistence API(JPA)

  자바 프로그램을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스

 

 

강의 주소 : https://youtu.be/ajZIPOv31yE

- MessageConverter가 궁금해요!

 

자바 Object를 누군가에게 전송할 때 JSON으로 컨버팅 해주는 것

 

자바 프로그램 ----------------------------------------------> 파이썬 프로그램

      MessageConverter: Jackson

                                 request(요청)

                                      JSON

                       <----------------------------------------------

                                 response(응답)

                                      JSON

      MessageConverter

 

 

- BufferedReader와 BufferedWriter

 

통신 규격의 시작은 영어권에서 시작되었다.

bit 단위는 0과 1로 표현되는데 사람의 언어로 인식하기 힘들었다.

영어의 한 문자는 8bit로 표현 할 수 있으며, 256가지의 문자 전송이 가능했다.

이 8bit를 1byte라 하며 통신의 단위로 정했다.

한글은 2byte, 중문은 3byte가 필요하다.

 

자바에서는 Byte Stream : 1Byte를 InputStream으로 읽는다.

InputStream은 처리 단위가 byte이기에 처리가 어렵다.

처리하기 위해서는 (char)형변환을 해야 함.

 

이를 위해 InputStreamReader로 문자 하나를 받을 수 있으며, 배열로 여러 문자를 받을 수 있다.

그러나 배열은 크기를 정하여 받아야 하기에 정해진 크기보다 적은 문자를 받을 때 낭비되는 자원이 발생한다.

이러한 문제를 해결하기 위해 BufferedReader로 감싼다.

 

BufferedReader는 가변길이의 문자를 받을 수 있다.

 

 

데이터를 쓸때는 BufferedWriter를 쓰는데 해당 메소드는 내려쓰기 기능이 없다.

그렇기에 PrintWriter라는 메소드를 사용한다.

 

JSP에서는 out라는 내장객체가 있는데 그게 BuffereWriter이다.

 

해당 기능을 이용 할 수 있는 어노테이션을 제공하는데

@ResponseBody ->  BufferedWriter

@RequestBody    ->  BufferedReader

이다.

 

 

강의 주소 : https://youtu.be/-5r52dt2HcU

- 필터란 무엇인가요?

   

필터 = 문지기

   - A 나라 성 : 톰캣

     filter(web.xml)

   - 왕의 집 : 스프링 컨테이너

     인터셉터(AOP)

 

 

- 어노테이션 ( 주석 + 힌트 ) <-- 컴파일러 무시하지 않음.

   (보통의 주석은 컴파일러가 무시를 함.)

 

   - 스프링 -> 어노테이션의 역할 : 객체 생성

      @Component -> 클래스를 메모리에 로딩

      @Autowired -> 로딩된 객체 해당 변수에 집어 넣어

       타입이 A인 것이 있으면 오토와이어시 a라는 변수에 Heap 메모리의 A가 주입된다. 이를 DI라 한다.

 

 

 

강의 주소 : https://youtu.be/mAFLNA9MYg8

- 스프링의 핵심은 무엇인가요?

 

1. 스프링이란?

    1) 스프링은 프레임워크이다.

    2) 스프링은 오픈소스이다.

    3) 스프링은 IoC 컨테이너를 가진다.

    4) 스프링은 DI를 지원한다.

    5) 스프링은 엄청나게 많은 필터를 가지고 있다.

    6) 스프링은 엄청나게 많은 어노테이션을 가지고 있다.

    7) 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.

    8) 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.

    9) 스프링은 계속 발전중이다.

 

2. IoC(Inversion of Controll / 제어의 역전)

주도권을 스프링이 갖는다.

class : 설계도

object : 실체화가 가능한 것

Instance : 실체화 된 것

 

3. DI(Dependency Injection / 의존성 주입)

의자라는 object를 어디서든 같은 내용으로 쓸 수 있다.

 

 

강의 주소 : https://youtu.be/XBG6CUtVCIg

 

Http, Https 호출 시 Https로 Redirection 처리되어 있는 환경에서 특정 URL에 대해 Https Redirection을 예외 처리하는 방법

 

SSL 적용

server {

    listen 80;
    server_name examle.com;
    return 301 https://$host$request_uri;
}

server {
	
    listen 443 ssl;
    server_name example.com;
    ...
}

 

예외처리

- 80 port에 대해서 redirection 적용 할 url에 대해서는 return을 해주고, 특정 url에 대해서는 return 처리 하지 않는다.

- 443 port에 대해서 특정 url에 대해서 return 301 htts redirection 처리 해준다.

server {
	
    listen 80;
    server_name examle.com;
    
    location / {
    	# the default location redirects to https
        return 301 https://$host$request_uri;
    }
    
    location /specificUrl/ {
    	# do not redirect requests for location
    }
    
    #...
    
}

server {

    listen 443 ssl;
    server_name example.com;
    
    location /specificUrl/ {
    	# redirect https requests to http server
        
    	return 301 http://$host$request_uri;
    }
    #...
}

'서버 > Nginx' 카테고리의 다른 글

Http 호출 시 Https Redirection  (0) 2022.06.14

+ Recent posts