강의노트
-
[JPA] 플러시 (flush)강의노트/JPA - 기본편 2021. 5. 27. 10:25
플러시란? 영속성 컨텍스트의 변경 내용을 DB에 반영하는 것 트랜잭션 commit이 일어날 때 플러시가 동작하는데, 이때 쓰기 지연 저장소에 쌓아 놨던 INSERT, UPDATE, DELETE SQL들이 DB에 전달된다. [주의] 영속성 컨텍스트를 비우는 것은 아니다. 플러시의 동작 과정 변경을 감지한다. (Dirty Checking) 수정된 Entity를 쓰기 지연 저장소에 등록한다. 쓰기 지연 저장소에 저장된 SQL을 DB에 전달한다. 플러시가 발생한다고 해서 commit이 이루어지는 것이 아니고 플러시 다음에 실제 commit이 일어난다. 플러시가 동작할 수 있는 이유는 데이터베이스 트랜잭션(작업 단위)이라는 개념이 있기 때문이다. 트랜잭션이 시작되고 해당 트랜잭션이 commit되는 시점 직전에만 ..
-
[JPA] JPA 소개강의노트/JPA - 기본편 2021. 3. 31. 10:25
SQL 중심적인 개발의 문제점 지금 시대는 객체를 관계형 DB에 관리 객체를 관계형 데이터베이스에 저장 객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수는 없을까? JPA의 탄생 배경 SQL 중심적인 개발의 문제점 무한 반복, 지루한 코드 (CRUD) SQL 의존적인 개발을 피하기 어렵다 패러다임의 불일치 객체 vs 관계형 데이터베이스 객체와 관계형 데이터베이스의 차이 상속 연관관계 참조 vs FK를 이용한 조인 객체는 한 방향으로 관계를 맺음 vs 테이블은 양방향으로 관계를 맺음 데이터 타입 데이터 식별 방법 객체 그래프 탐색 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다. '.'을 찍어서 연관된 객체를 탐색하는 것을 객체 그래프 탐색이라 한다. 객체 그래프 탐색은 처음 실행하는 SQL에 따라..
-
[HTTP] HTTP 기본강의노트/HTTP 2021. 3. 30. 09:43
HTTP (HyperText Transfer Protocol) HTTP 메시지에 모든 것을 전송 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 지금은 HTTP 시대! HTTP 역사 HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더X HTTP/1.0 1996년 : 메서드, 헤더 추가 HTTP/1.1 1997 : 가장 많이 사용, 우리에게 가장 중요한 버번 RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014) HTTP/2.0 2015 : 성능 개선 HTTP/3 진행중 : TCP 대신 UDP 사용, 성능 개선 기반 프로토콜..
-
[HTTP] URI와 웹 브라우저 요청 흐름강의노트/HTTP 2021. 3. 29. 17:02
URI (Uniform Resource Idendifier) URI 사람을 주민등록번호로 식별 할 수 있듯이 리소스를 식별 할 수 있는 식별자 (URL과 URN을 모두 포함하는 개념) Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원, URI로 식별 할 수 있는 모든 것 (제한 없음) Identifier : 다른 항목과 구분하는데 필요한 정보 URL (Uniform Resource Locator) Locator : 리소스가 있는 위치를 지정 URN (Uniform Resource Name) Name : 리소스에 이름을 부여 URL 전체 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment] ex) https://www.googl..
-
[HTTP] 인터넷 네트워크강의노트/HTTP 2021. 3. 29. 16:33
IP (인터넷 프로토콜) 복잡한 인터넷 망에서 수많은 노드들을 거쳐서 어떻게 클라이언트에서 서버로 메세지가 전달될 수 있을까? 최소한의 규칙이 필요 : IP 주소 인터넷 프로토콜 역할 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보 출발지 IP 목적지 IP 기타 전송 데이터 IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 대상 서버가 패킷을 받을 수 있는 상태인지 모름 ex) 우편 전송 비신뢰성 중간에 패킷이 사라지면? 노드(서버)를 거쳐서 전달되기 때문에 패킷이 손실될 가능성이 있음 패킷이 순서대로 안오면? 패킷의 사이즈가 크면 대략 1500Byte씩 끊어서 전송 프로그램 구분 같은 IP를 ..
-
[스프링 시큐리티] 자원 접근 허용 여부 결정 주체 (AccessDecisionManager, AccessDecisionVoter)강의노트/스프링 시큐리티 2020. 10. 7. 11:58
AccessDecisionManager 인증 정보, 요청 정보, 권한 정보를 이용해서 사용자의 자원접근을 허용할 것인지 거부할 것인지를 최종 결정하는 주체 여러 개의 Voter들을 가질 수 있으며 Voter들로부터 접근 허용, 거부, 보류에 해당하는 각각의 값을 리턴받고 판단 및 결정 최종 접근 거부 시 예외 발생 접근 결정의 세 가지 유형 AffirmativeBased 여러 개의 Voter 클래스 중 하나라도 접근 허가로 결론을 내면 접근 허가로 판단한다. ConsensusBased 다수표(승인 및 거부)에 의해 최정 결정을 판단한다. 동수일 경우 기본은 접근허가하나 allowIfEqualGrantedDeniedDecisions를 false로 설정할 경우 접근 거부로 결정된다. UnanimousBase..
-
[스프링 시큐리티] 자원 접근 허용 여부 검증(Authorization, FilterSecurityInterceptor)강의노트/스프링 시큐리티 2020. 9. 23. 22:04
Authorization 인증을 받은 클라이언트가 어떤 자원에 접근하려 할 때 그 자원에 접근할 수 있는 권한을 가지고 있는지 검증하는 것이다. 스프링 시큐리티가 지원하는 권한 계층 웹 계층 URL 요청에 따른 메뉴 혹은 화면 단위의 레벨 보안 서비스 계층 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안 도메인 계층 (Access Control List, 접근 제어 목록) 객체 단위의 레벨 보안 FilterSecurityInterceptor 스프링 Security가 가지고 있는 필터들 중에서 가장 마지막에 위치한 필터로써 인증된 사용자에 대하여 특정 요청의 승인/거부를 최종적으로 결정한다. 인증 객체 없이 보호자원에 접근을 시도할 경우 AuthenticationException을 발생 시킨다. 인증..
-
[스프링 시큐리티] 인증 여부 결정 주체(AuthenticationProvider)강의노트/스프링 시큐리티 2020. 9. 23. 21:57
AuthenticationProvider 인터페이스 스프링 시큐리티에서 기본으로 제공하는 구현체가 있고, 해당 인터페이스를 상속 받아서 커스텀하게 구현할 수도 있다. authenticate 인증처리를 위한 실제적인 검증을 하는 함수 supports 인증을 처리할 수 있는 기준이 되는지 검사하는 함수 ID 검증 UserDetailsService 인터페이스 구현체를 통해서 User 객체를 조회한다. 전달된 ID를 가지고 User 객체를 조회하고, User 객체가 존재한다면 UserDetails 타입으로 변환해서 AuthenticationProvider로 반환한다. password 검증 UserDetailsService에서 반환받은 UserDetails 객체에 있는 패스워드와 로그인 시 입력된 패스워드를 비교..