분류 전체보기
-
Network - 커넥션 관리Network 2020. 6. 30. 19:41
이번 장에서 살펴볼 주제 HTTP는 어떻게 TCP 커넥션을 사용하는가 TCP 커넥션의 지연, 병목, 막힘 병렬 커넥션, keep-alive 커넥션, 커넥션 파이프라인을 활용한 HTTP 최적화 커넥션 관리를 위해 따라야할 규칙들 TCP 커넥션 전 세계 모든 HTTP 통신은 패킷 교환 네트워크 프로토콜의 계층화된 집합인 TCP/IP를 통해 이루어집니다. 커넥션이 이루어지게 되면 클라이언트와 서버간에 주고받는 메시지들은 손실 혹은 손상되거나 순서가 바뀌지 않고 안전하게 전달됩니다. 웹 브라우저가 TCP 커넥션을 통해서 웹 서버로 보내는 순서는 아래와 같습니다. 브라우저가 호트스명을 추출합니다. 브라우저가 이 호스트 명에 대한 IP 주소를 찾습니다. 브라우저가 포트 번호를 얻습니다. 브라우저가 IP주소의 포트로..
-
Network - HTTP 메시지Network 2020. 6. 30. 19:39
이번 장에서 살펴볼 주제 메시지가 어떻게 흘러가는가 HTTP 메시지의 세 부분(시작줄, 헤더, 개체 본문) 요청과 응답 메시지의 차이 요청 메시지가 지원하는 여러 기능(메소드)들 응답 메시지가 반환하는 여러 상태 코드들 여러 HTTP 헤더들은 무슨 일을 하는가 메시지의 흐름 HTTP 메시지는 인바운드, 아웃바운드, 업스트림, 다운스트림 총 4가지 용어는 메시지의 방향을 의미합니다. 이 용어들에 대해 살펴보겠습니다. 인바운드, 아웃바운드 트랜잭션 방향을 표현하기 위해 사용합니다. 메시지가 서버로 향하는 것이 인바운드이고 처리가 끝난 메시지가 사용자에게 돌아가는 것을 아웃바운드라고 합니다. 업스트림, 다운스트림 HTTP 메시지는 강물과 같이 흐르게 되는데 모든 메시지의 흐름은 다운스트림으로 흐릅니다. 상류(..
-
Network - URL과 리소스Network 2020. 6. 30. 19:34
이번 장에서 살펴볼 주제 URL 문법, URL 컴포넌트가 어떤 의미를 가지며 무엇을 수행하는지 여러 웹 클라이언트가 지원하는 상대 URL과 확장 URL 같은 단축 URL에 대해서 URL의 인코딩과 문자 규칙 여러 인터넷 정보 시스템에 적용되는 공통 URL 스킴 기존 이름은 유지하면서 객체들을 다른 장소로 옮겨주는 URN을 포함한 URL의 미래 위 다섯 가지의 주제를 살펴보면서 이번 장을 학습해보도록 하겠습니다!✍ 인터넷의 리소스 탐색하기 URL은 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리키며, 이로 인해서 유저들은 셀 수 없이 많은 리소스를 찾아내고, 활용할 수 있습니다. URL은 URN과 합쳐져 URI라는 종합적인 개념의 부분 집합입니다. 여기서 URN이란 이름만을 통해 리소스를 식별하는 방..
-
Network - HTTPNetwork 2020. 6. 30. 19:32
HTTP HTTP(Hypertext Transfer Protocol)은 WWW(World Wide Web)에서 통신하는데 사용하는 프로토콜 프로그램입니다. 즉, 전 세계의 웹 브라우저, 서버, 웹 애플리케이션은 모두 HTTP를 통해서 대화를 하게 되어있습니다. 현재 셀 수 없이 많은 이미지, HTML 페이지, 텍스트 파일, 동영상 등 쉴틈없이 인터넷에서 움직이고 있습니다. 이런 상황에서 HTTP는 전 세계에 이 정보들을 빠르고, 간편하고, 정확하게 각 PC의 브라우저로 옮겨줄 수 있습니다. 정말 신기하기도 하고 의아한 점은 이러한 많은 정보들을 전송 중 꼬이거나 손상되지 않는다는 점입니다. 그렇기 떄문에 개발자 입장에서는 HTTP를 사용함으로써 전송에러를 걱정하지 않고 개발을 할 수 있다는 것입니다.! ..
-
JPA - JpaRepository.save()Back-end/JPA 2020. 6. 30. 17:29
엔티티 저장하기 내부적으로 save()는 객체가 새로운 객체인지 다른 객체인지 판단을 합니다. Transient(새로운) 상태의 객체라면 EntityManager.persist() Detached(이미있는) 상태의 객체라면 EntityManager.merge() 위 두 가지의 상태를 구분하여 insert 혹은 update를 판단하게 됩니다. Transient와 Detached의 상태 판단은? 엔티티의 @Id 프로퍼티를 찾아서 해당 프로퍼티가 null이면 Transient 상태로 판단하고 id가 null이 아니면 Detached 상태로 판단합니다. 엔티티가 Persistable 인터페이스를 구현하고 있다면 isNew() 메소드에 위임합니다. JpaRepositoryFactory를 상속받는 클래스를 만들고 ..
-
JPA - JpaRepositoryBack-end/JPA 2020. 6. 30. 17:20
스프링 데이터 JPA Repository @EnableJpaRepositories JPA Repository를 사용하기 위해서는 Spring Framework 에서는 @EnableJpaRepositories 애노테이션을 사용해야 JpaRepository 인터페이스를 상속받은 Repository 인터페이스 타입의 Proxy 빈들을 등록해줍니다. 하지만 스프링 부트 사용할 때는 사용하지 않아도 자동 설정이 되므로 따로 세팅하지 않아도 됩니다. 스프링 부트를 사용하지 않을 때는 @Configuration과 같이 사용합니다. @Repository @Repository애노테이션은 JpaRepository의 기본 구현체인 SimpleJpaRepository가 가지고 있기 떄문에 또 사용하지 않아도 됩니다. Simp..
-
JPA - Common Pageable, SortBack-end/JPA 2020. 6. 30. 17:19
스프링 MVC HandlerMethodArgumentResolver 스프링 MVC 핸들러 메소드의 매개변수로 받을 수 있는 객체를 확장하고 싶을 때 사용하는 인터페이스로 이번에 실습해볼 Pageable과 Sort를 매개변수로 사용할 수 있습니다. 참고자료 : 레퍼런스 페이징과 정렬 관련 매개변수 page: 0부터 시작. size: 기본값 20. sort: property,property(,ASC|DESC) 예) sort=created,desc&sort=title (asc가 기본값) Pageable, Sort @RestController public class PostController { @Autowired private PostRepository postRepository; @GetMapping("/p..
-
JPA - Common DomainClassConverterBack-end/JPA 2020. 6. 30. 17:18
DomainClassConverter 하나의 타입을 다른 타입으로 변환하는 인터페이스로서 엔티티 혹은 ID를 각각의 타입으로 자동으로 변환해줍니다. 컨버팅에는 2가지 종류가 있습니다. ToEntityConverter: 어떠한 Entity의 Id를 받아서 그 Entity 타입으로 변환하는 Converter입니다. ToIdConverter: Entity를 그 Entity의 Id 타입으로 변환하는 Converter입니다. 침고자료 : 레퍼런스 Entity, Repository, Controller 생성 @RestController public class PostController { @Autowired private PostRepository postRepository; @GetMapping("/posts/{..